2010-10-26 120 views
2

我正在多用戶git環境中工作。我的工作流程是在分支中工作,然後從遠程設備拖入本地主設備,然後重新綁定我的工作分支,將分支合併到本地主設備,然後推送到遠程倉庫。Git衝突提交

在最近的pull中有6個新的提交,其中一個我的代碼需要優先。

如果我rebase,我需要解決幾個衝突,然後用我自己的替換現有的對象。我可以做到這一點,但它看起來非常手動,並乞求問題。

什麼是更好的處理方法?

回答

2

可以git revert在主分支的錯誤提交,然後變基到您的主題分支:

git checkout master 
git revert <sha1> 
git rebase master topic 
+0

小挑逗:你可以縮短最後兩個'git'命令到'git rebase master topic'。 – 2010-10-26 15:06:53

+0

@Frerich修好了,謝謝! – 2010-10-26 15:11:26

+0

感謝Gabe和法國人,我想這正是我正在尋找的東西,但由於某種原因無法擺脫困境。似乎非常清楚,正是我想要做的。 – 2010-10-26 15:14:11

0

我不確定是否有更好的方法。如果兩個提交衝突,那麼你必須告訴GIT如何解決它。

雖然你的問題表明它比這個大一點。這聽起來像是你已經完成了「框架A與支持對象B」,並且主線完成了「框架C與支持對象D」,並且您想放棄C & D,轉而選擇A & B.這是正確的嗎?

如果是這樣,那麼你仍然存在同樣的問題:你需要決定告訴git。如果新代碼取代了舊代碼,那麼git無法知道,除非你告訴它。

最終,您必須重新綁定或合併,兩者將具有相同的一組衝突。

+0

是的,這幾乎總結的話,我希望我能拉起違規提交,合併我的改變,然後拉開休息,而不是我正在看的門對門。 – 2010-10-26 14:56:57

+0

你可以(有點兒)那樣做......你可以一個接一個地提交提交,並在你去時修復它們,而不是做一個大的拉和合並。 Rebase會有效地做到這一點,但它會合並*你的*提交一個接一個,而不是主線。 – 2010-10-26 15:21:07

+0

在閱讀其他答案後,我發現我有些誤解:不清楚你是否想完全拋棄主線提交。在這種情況下,「恢復」是要走的路。 – 2010-10-26 15:22:34