2013-10-09 62 views
2

我在與git合併時犯了一個錯誤。我有一個主分支和另一個叫做mars的分支。Git合併錯誤

主分支包含非常舊的代碼,我不想使用它。然而,當我試圖讓火星的最新的代碼,我所做的:

git fetch 
git merge origin/master  <------ This is a mistake as I should use "git merge origin/mars" 

最後的命令合併失敗的失敗,讓我來解決衝突。我修復衝突,並確實

git stash 
git stash drop 

我認爲這應該放棄任何我只是手動解決衝突。

但我不確定我是否已經錯誤地將主從事物合併到了火星上。如果是這樣,火星分支被污染。

有無論如何我可以證實我的本地火星並沒有與主人的任何東西合併? (它不是連續的)。

非常感謝。

+0

可能重複[在Git中取消合併](http://stackoverflow.com/questions/101752/aborting-a-merge-in-git) – jthill

回答

0

git中沒有任何東西丟失,只要你沒有推動任何東西,你可以安全地做很多提交圖形手術。

檢查日誌(或使用gitk --all)以查明分支指針是什麼以及過去是什麼。然後,如果需要,可以將它們更改爲git branch -f <branchname> <commit>

2

可以恢復到以前的承諾,忽略任何改變:

git reset --hard HEAD 

其中HEAD是當前分支的最後一次提交。

如果你想獲得遠程火星分支

git reset --hard origin/mars 
+0

感謝您的回答。我沒有做任何事情。我只是在mars分支上做了「git merge origin/master」。我想這會將遠程主人合併到我的本地火星分支中。這是錯誤的。我只想驗證我的本地分支與遠程火星仍然是一樣的。 – Kevin

0

如果你只是要檢查是否有在所有不同的(但是在mars):

git diff origin/mars 

如果有差異,你會注意到他們。

如果有差異,或者確保您的本地mars分公司是絕對相同的遠程mars分支,做

git reset --hard origin/mars 

小心!這將丟棄對mars的任何本地更改,並使其與origin/mars完全相同。

0

在git中,當您嘗試合併並存在衝突時,它不會創建提交。這意味着由於git status而出現的任何更改都是您不想要的更改。通過git log驗證上次提交是否是您想要的提交。

如果git status產生結果,請通過執行git checkout *覆蓋最近結帳的已更改文件。這假定你已經在火星分支。

如果git status沒有輸出,請按照最初的設計繼續使用git merge origin/mars命令。