2015-02-09 59 views
4

使用git flow工具,我創建了一個功能分支(分支爲dev),進行了一系列更改,並將分支合併回dev修補程序在合併後未應用

有一個文件,我已經修改了功能分支。我可以確認修改該文件()的修訂版本()存在並應用於功能分支中。

但是,在合併之後,FILE-Adev分支上處於其原始(預合併)狀態。我可以看到REV-A當我在dev上執行git log,並且如果我按照git log --graph生成的行,我可以將此提交跟蹤到合併提交,其中我合併了我的功能分支和dev

但是,當我做一個git blameFILE-A時,提交不存在,並且所涉及的行在其原始位置(在REV-A提交之前)。

此外,git show REV-A | patch -p1導致修補程序被清晰地應用。之後,git diff看起來與git show REV-A相同。

發生了什麼事?合併是如何將修訂引入分支歷史記錄的,但實際上並不適用它?該合併中是否還有其他更改未被應用?

+0

功能分支是否在任何時候重新啓動? – VonC 2015-02-12 12:50:29

+0

請發佈'git log --graph --decorate --oneline --full-history --ancestry-path^REV_A HEAD'的結果(檢出錯綜複雜的合併)。 – jthill 2015-02-17 05:16:31

+0

查看你運行的命令會很有幫助。如果你有一個shell插件顯示你運行命令的分支,那更好。我的猜測是,您可能已將'dev'合併到您的功能分支中,而不是將您的功能分支合併到'dev'中。但是,這只是瘋狂的猜測而沒有看到你在做什麼。 – spinlock 2015-02-18 21:54:36

回答

2

如果一些變化帥哥似乎從合併結果丟失,你需要問的問題只是第一個在我的經驗是git diff是否顯示它們作爲合併基礎和分支末端之間變化。問它:

git diff $merge^1...$merge^2 -- FILE-A # `$merge^2` was `feature` as of the merge 
             # `$merge^1` was `dev` 

上述三個點的語法特定於差異,每個人都至少有時希望看到什麼樣的變化帥哥合併是看到了一個分支。

如果所做的更改不會出現在輸出那麼這些REV_A變化在一些恢復REV_A和合並,無論是由先前的合併(於任一分支)之間的承諾,在這種情況下,你能問同樣的問題再次關於該合併,或者直接相當於git revert

如果更改確實出現在輸出中,那麼由於修補程序應用乾淨,所以在該合併中手動恢復更​​改。

2

你還有你跑的命令嗎?這將有助於追蹤事情可能出錯的地方。我不禁想到,該功能沒有正確完成。你能確認你輸入git flow feature finish my_feature

我用下面的命令模擬了一個功能,但沒有遇到你描述的問題。如果你的步驟偏離我下面的內容,那麼比較如何以及在哪裏就會很好。

MBP:git-test acanby (master)$ echo "Original Code" > file.txt 
MBP:git-test acanby (master)$ git commit -am "First commit" 
MBP:git-test acanby (master)$ git flow init 
MBP:git-test acanby (develop)$ git flow feature start my_feature 
MBP:git-test acanby (feature/my_feature)$ echo "New feature here" >> file.txt 
MBP:git-test acanby (feature/my_feature)$ git commit -am "Feature change" 
MBP:git-test acanby (feature/my_feature)$ git flow feature finish my_feature 
MBP:git-test acanby (develop)$ git blame file.txt 
    ^d96c279 (acanby 2015-02-16 20:36:22 +1100 1) Original Code 
    62a38725 (acanby 2015-02-16 20:38:37 +1100 2) New feature here 
MBP:git-test acanby (develop)$ git log --oneline 
    62a3872 Feature change 
    d96c279 First commit 

使用這些命令我才得以完成使用混帳流工作流程功能。

如果您想了解更多有關git-flow工作流程(尤其是命令及其功能)的信息,有一個很好的備忘單here