2015-02-09 28 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