2017-08-02 34 views
1

我有一個關於創建分支問題:的Git,你的分支進取「的由來/主」由1提交

首先,我從產地/主創建一個分支

$ git checkout -b dev origin/master 
$ git push origin dev 

後修改文件,那麼

$ git add . 
$ git commit -m "add ii" 
$ git status 
On branch dev 
Your branch is ahead of 'origin/master' by 1 commit. 
    (use "git push" to publish your local commits) 
nothing to commit, working directory clean 

$ git push origin dev 
$ git status 
On branch dev 
Your branch is ahead of 'origin/master' by 1 commit. 
    (use "git push" to publish your local commits) 
nothing to commit, working directory clean 

我發現原產地/ dev也有提交日誌什麼是添加ii。

爲什麼git會提示消息什麼是您的分支在1個提交之前在'origin/master'之前?

回答

1

通過迄今爲止你所做的一切運行:

假設你有一個主分支遠程回購: git checkout -b dev origin/master將創建一個名爲dev地方分支機構的基礎上,origin/master,並跟蹤origin/master分支。 您可以通過使用git branch -vv 確認正在跟蹤的分支(上游分支),它會給你一些輸出,看起來像:

dev  <commit> [origin/master] <message> 
master <commit> [origin/master] <message> 

注意,在方括號中的那部分顯示了上游分支,這是git用來決定你的本地分支是否與你的遠程分支同步的東西。這可能是混淆來自的地方。

然後,您運行git push origin dev,這會將您當前的本地分支推送到遠程服務器上名爲dev的分支。 如果驗證了這一點與git branch -r查看遠程分支機構,你可能會看到:

origin/dev 
origin/master 

然後您創造了dev分支的額外承諾,並再次運行git push origin dev,這推動了遙控器上的更改dev branch服務器。

當您運行git status,git會當地分行dev比較的遠程分支被跟蹤(origin/master),因爲origin/master沒有改變,它仍然是1提交您的當前dev分支(和origin/dev)背後/變化,因此消息。

我懷疑你想要做的是改變你的本地dev分支來跟蹤遠程dev分支。這在其他答案中有更詳細的介紹,但總之,您可以運行git branch --set-upstream-to=origin/dev。或者,您可以將--set-upstream附加到您的推送命令:git push origin dev --set-upstream

+1

我明白了。根據你的解釋,我解決了這個問題。謝謝! – gao

+0

很高興聽到,祝你好運= D – Chris

0

考慮到,你從主分支建立帳戶,並已出版了分支:

git push origin dev 

看來你仍然在Dev分支和消息只是最高審計機關,你的當前狀態(在Dev分支)在一次提交之前領先於主人。沒有更多的信息,從我的角度來看,這是正確的,因爲您的提交併未在原始/主機中執行,而是在「dev」分支中執行,因此您的分支隨着消息的提前而行。

[編輯]

變化再次掌握並從「開發」分支合併發佈在主的變化:

git checkout master 
git merge dev 
0

這裏有一個分支發展師父創建。所以Master分支是父母,Develop是孩子。

所以,當你在你的分支進行開發。它將歷史與作爲主人的父母進行比較。它可以讓你知道你的分支在前面是一個提交更多的是你的分支的主人。

一旦你將開發分支與主人合併,它不會告訴你這個.. CZ現在你的父分支包含所有的提交。

1

TL; DR:運行git branch --set-upstream-to=origin/dev

您看到該消息,因爲你有你的dev分支設置爲origin/masterupstream。您成功從本地dev分支推送到origin/dev,但您的本地開發上游仍然設置爲origin/master。你可以認爲該消息爲:

Your branch is ahead of '<upstream-of-current-branch>' by 1 commit. 

你可能想設置你的上游原產地的/ dev,像這樣:

git branch --set-upstream-to=origin/dev 

然後,當你運行git status則應該看到這一點:

On branch dev <----------------------------------- your local, current branch 
Your branch is up-to-date with 'origin/dev'. <---- upstream is up-to-date 
nothing to commit, working tree clean <----------- local branch is up-to-date 

要同步主,我會建議你通過Github或任何git回購服務託管您的遠程回購。通過該服務,create a pull request然後你/你的團隊中的相關人員可以accept the pull request,這將帶領掌握最新。