2012-07-02 56 views
2

我無法理解git本地和遠程版本控制的概念。例如,我有一個iPhone應用程序在本地git代表。最初這是我的主分支。然後我檢查了一個新的分支git checkout -b "update-2.0.1"git push說一切都是最新的

然後我設置了git push origin update-2.0.1以確保我有一個獨立的分支來開發此應用更新,並在完成合並後將其重新分配到我的主分支中。精細!

現在我在更新分支上,我想爲每個問題ID創建分支。所以我說git checkout -b "#3178" - 當我現在嘗試推送這個新問題 - 在我的遠程存儲庫中的分支git說"Everything-up-to-date"

我不明白爲什麼不可能將此問題分支推送到遠程存儲庫?

git remote -b回報

產地/主

產地/更新2.0.1

我很想看到第三分支

產地/最新情況: 2.0.1 /#3178

+0

你有什麼東西進入這個新的分支?它可能是空的。 – gabrielhilal

+0

它是空的,但update-2.0.1也是空的,git將它推送到遠程。現在它不能......? – MrBr

回答

0

新分支未被推入遠程存儲庫的原因很簡單,因爲我沒有使用雙引號。

git push origin "new-branch" 

此外,當重命名分支始終使用雙引號 - 至少在我的情況下,它的工作,而不是在網絡的所有代碼示例使用此語法。

0

切換到您要合併的分支,例如,轉到「主」,並將其他分支更新-2.0.1合併到主。

git checkout master 
git merge update-2.0.1 
git push 

例如。然後,您可以從主分支中的更新分支獲得所有更改,並且可以推送它。

當你真正需要的只是一個新的分支,然後從分支你在這段時間只作

git branch name 

。當你把它推到原點你有一個新的遠程分支

git branch -r #remote branches 
git branch #local branches 
2

您需要重複第一個命令檢查:

git push origin <name-of-branch> 

創建相應的遠程分支您在本地創建的每個新分支。 Git不會推動,除非它有某個地方推動。如果這是你需要的,這可以是一個空分支。

你可以這樣結束了

origin/<name-of-branch> 

,而不是

origin/<name-of-branch>/<name-of-other-branch> 

雖然他們沒有將一個層次上市,他們實際上做分支掉對方。使用gitk或其他東西來直觀地查看歷史日誌以確認這一點。

如果你想完成的問題開展工作,並將其合併到它從開始分支,這樣做:

git checkout <name-of-original-branch> // update-2.0.1 
git merge --no-ff <name-of-finished-branch> // #3178 
git push origin // Will write local update-2.0.1 to origin 

退房git flow如果你想爲什麼使用--no的很好的視覺解釋-ff選項是一個非常強大的模型,用於跟蹤其他分支作爲發佈週期一部分的分支。

+0

我想我明白你的觀點,而且這就是它的工作方式。另一方面,我認爲我可以在沒有任何提交的情況下推動問題分支,讓其他團隊成員在沒有命名的情況下工作。我只看到了兩個相同的進程(推送一個空的更新分支並推送一個空的問題分支),並得到兩個不同的結果。 – MrBr

+0

您可以使用上面的第一條命令推送一個空分支。我稍微亂了一下。編輯修改。 –

+0

它仍然無法正常工作。我正在研究分支#3178提交了我的工作並希望'git push origin#3178'仍然具有相同的結果'一切都是最新的' – MrBr

相關問題