2013-06-03 72 views
4

我有一段時間編排我的第一個主要分支併合並。發生了什麼事是我有一個叫做'main'的主分支,並且創建了一個名爲'branch2'的新分支。在幾個文件中,我在幾個文件中對'branch2'進行了很多更改,並創建了一些新文件。在這段時間裏,我還對「主」做了一些小的改動。當時間合併,我檢查了'主',並呼籲git merge branch2。毫不奇怪,它告訴我在我的一個文件中有衝突要解決。所以我用git mergetool來打開meld,我的差異查看器的選擇,以解決這些差異。在調和這些差異之後,我再次調用git merge branch2,並且合併成功發生。合併後不會出現主分支的更改

問題是,它實際上並未成功合併。一些元素合併合適,但'branch2'中的一些變化從未移過,我不知道爲什麼。我試過打電話git merge branch2,但現在它只是說「一切都是最新的」。這顯然是不正確的,因爲如果你git checkout branch2,那麼你可以看到不是'主'的變化。

任何想法可能發生了什麼?爲什麼git在沒有正確合併的時候聲明「一切都是最新的」?有什麼辦法強制git再次嘗試合併?

+0

通常,在我解決了與'git mergetool'衝突後,我做了一個git status來檢查一切是否正常。然後我編譯源代碼,運行測試等,以確保一切正常,然後簡單地提交。你做了這一步嗎?衝突解決後我不再合併,但不確定是否有任何影響。另外,我通常會更頻繁地合併我的功能分支。 –

+0

我希望更頻繁地合併我的特性分支,但分支的目的是在新代碼完全準備好之前將新代碼保留在主代碼之外。我不想在生產版本中使用一半的代碼(這是一個網站,因此外部世界可以看到主要分支中的東西)。 –

+0

聽起來您在執行合併時犯了一些錯誤,您應該重置爲合併提交之前並重新合併。 –

回答

4

你做了一個邪惡的合併。運行gitk --all以查看發生了什麼。當你第二次打電話git merge時,你出錯了。當您解決衝突時,您需要運行git commit,而不是合併。

但git現在認爲你的branch2合併到main。所以你需要刪除合併提交。使用gitk獲取合併前的最後一次提交,並在主分支上運行git reset --hard **SHA**以將其重置回該階段。然後再次合併。

相關問題