git獲取遠程服務器的指定分支


昨天糗大了...進入新公司,公司服務器上有Online為線上版本,開發版本默認的為Master,本地clone的開發版為master,公司用的git 自動部署(puh后服務器自動更新了代碼...這個有很多配置教程,這里就不贅述啦),
本地開發分支master,一般流程是 合並到online分支后,把online push到遠程分支....這個是流程OK不說了
場景是這樣的:
本地master
執行 checkout -b online后
git push origin online  發現權限不夠....囧事發生了,我以為是賬號權限受控....特意去問cto......
好吧,我這里操作是不對滴(按照以往的部署方式不能習慣性的用在新公司..警惕吧)
git pull 操作就可以從遠程庫中獲取某個分支的更新,再與本地指定的分支進行自動merge(即使本地不存在這個分支)

完整格式是:

$ git pull <遠程庫名> <遠程分支名>:<本地分支名>

比如,取回遠程庫中的online分支,與本地的online分支進行merge,要寫成:

git pull origin online:online

如果是要與本地當前分支merge,則冒號后面的<本地分支名>可以不寫

git pull origin online

通常,git會將本地庫分支與遠程分支之間建立一種追蹤關系。比如,在git clone的時候,所有本地分支默認與遠程庫的同名分支建立追蹤關系。也就是說,本地的master分支自動追蹤origin/master分支。因此,如果當前處於本地online分支上,並且本地online分支與遠程的online分支有追蹤關系,那么遠程的分支名可以省略:

比如,取回遠程庫中的online分支,與本地的online分支進行merge,要寫成:

git pull origin 

其實,git pull 命令等同於先做了git fetch ,再做了git merge。即:

git fetch origin online
git checkout online
git merge origin/online

造成我的錯誤在於我本地使用checkout -b online 是創建的新onlne分支,而與服務器online根本不算是同一個分支,所以要從服務端拉取,切記吧

再次完整總結這次教訓:

git 拉取遠程指定分支 pull本地不存在的分支

默認,如果git項目只有一個分支,就是master,我們當然可以在本地創建多個分支,並推送到遠程git管理平台上,或者將遠程git管理平台上的其他分支拉取到自己電腦上。

一、查看本地已有的分支

進入到項目根目錄,打開命令行/終端,輸入指令,將會顯示該項目的本地的全部分支,其中、當前分支的前面有*號。

git branch

二、本地檢出一個新的分支並推送到遠程倉庫
(一).創建本地分支
git checkout -b 新分支名

執行該指令后,會在本地創建一個新分支,該分支是從當前分支上檢出的,所以所有文件內容都和當前分支一模一樣,這是正常的。創建成功后,將自動切換至新分支上。

比如我要創建一個名為dev1的新分支:

git checkout -b dev1

此時,再執行git branch查看當前本地所有分支,就會看到多了個分支:dev1.

(二).推送本地分支到遠程倉庫
git push --set-upstream origin 分支名

例如,我要把上一步創建的本地dev1推送到遠程倉庫:

三、將遠程git倉庫里的指定分支拉取到本地(本地不存在的分支,今天的囧事就發生在這個環節

當我想從遠程倉庫里拉取一條本地不存在的分支時:

git checkout -b 本地分支名 origin/遠程分支名

這個將會自動創建一個新的本地分支,並與指定的遠程分支關聯起來。

例如遠程倉庫里有個分支dev2,我本地沒有該分支,我要把dev2拉到我本地:

若成功,將會在本地創建新分支dev2,並自動切到dev2上。

如果出現提示:

fatal: Cannot update paths and switch to branch 'dev2' at the same time.
Did you intend to checkout 'origin/dev2' which can not be resolved as commit?

表示拉取不成功。上面的我需要先執行

git fetch

然后再執行

git checkout -b 本地分支名 origin/遠程分支名

即可。

其實這里就是我上面描述的,不用fetch,直接 git pull origin dev2:dev2 一個命令可以達到同等效果.

提示已經是最新的了...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM