假設我有以下情況:git-rebase:收斂兩個不同的分支/庫
存在User Foo的存儲庫主。用戶欄會分散這個存儲庫,因此這兩個存儲庫都是同步的。現在,用戶欄實現了一個功能並創建了一個名爲「barbranch」的本地分支。當用戶Bar完成一個特性的時候,Foo提交併推送了一些東西到主存儲庫。所以基本上這樣的情況如下:
A---B---C---D main repository
\
E forked repository (where C=E)
\
F barbranch on forked repository
現在在用戶Foo的回購中如何恢復正常?
天真,我會說:
# switch to the local master and merge barbranch into it
git checkout master
git pull
git pull upstream
git push
git merge barbranch
# merge conflicts occur
vi somefile
git commit -a
git rebase origin master
# this conflict occurs again
vi somefile
git commit -a
git status # says I'm on (no branch) ?!
git push
g it checkout master
# conflict occurs again!
vi somefile
git commit -a
git push
# send merge request to user Foo
最後這給了我三醜承諾,而不是一個。我發現。雖然我無法弄清楚確切的命令是什麼,整個過程最終會如何。
謝謝,是的,我想要「線性化」版本。只是爲了澄清一下:我在哪個分支上執行'git fetch upstream'? 「解決衝突+提交」的每一步最後都是'vi somefile; git commit -a',對吧? – user694971
您可以從任何地方獲取。爲每個衝突文件+最終的「git commit」解決衝突=(「vi」+「git add resolved_file」)。當多個文件發生衝突時,這種方式會更好:您可以每次都知道哪些衝突文件尚未使用「git status」解決。 –
這真的很奇怪,我收到[this]這樣的消息(http://pastebin.com/NFirzz6g)。雖然這個分支已經在問題的補丁被接受之前創建... – user694971