如何防止git merge confclit“吃”更改?

时间:2016-03-23 18:15:03

标签: git github merge git-merge

我搞砸了另一次合并。当我在上面的线路上进行更改时,我有两条线压在一起并错过了第二条线上的小改动。

所以这就是冲突:

hur

这就是我搞砸的地方: dur

看到区别? Awaiting Fulfillment需要小写。

这是我的坏事,但这不是我的问题/问题。

问题在于,当我合并它时,看起来Awaiting Fulfillment永远不会被更改。 git blame在更改之前显示提交,而不是我的b0rked合并。拉取请求中的差异也显示无变化到该行。

这发生在我们身上几次,我不确定如何抓住它。如何让这些糟糕的合并清晰易懂?

以下是我所做的事情(我的工作流程):

1)我做了一个分支,permissions

2)我在permissions

上工作

3)当我完成后,我git pull master

4)修复合并冲突后,我推送permissions分支并转到GitHub,这样我就可以从那里发出拉取请求;现在我的团队看着我已经破坏了我的新功能

5)然后我们合并拉取请求

这会产生以下两个问题:

查看合并提交,该行没有任何变化。第658行是“未受影响的”。

git blame未显示更改它的冲突提交。这就像它永远不会改变。

埋在拉取请求中,可以找到我的错误合并,但不是在我只是浏览文件的历史时。

我尝试了什么:

我在git reset --hardgit pull --rebase以及git rebase master搞砸了之前回到了git rebase permissions。我完成了git pull --rebase并最终遇到了同样的问题(git blame不清楚,并且很难找到搞砸了)。这些改变感觉就像一场死亡游行 - 太多的变化,我终于放弃了。

我觉得我在这里缺少一些关键的git概念,但我不确定在哪里开始阅读。

1 个答案:

答案 0 :(得分:1)

  

如何让这些糟糕的合并清晰易懂?

在从2.6.2开始的git中,您可以使用blame --first-parent来查找已经在master中的更改,但是已通过合并进行了还原。但是为了使它在你的情况下工作(当你的分支中的变化已经恢复时),你应该责怪你的分支负责人