如何防止 git 合并冲突来自 "eating" 更改?

How do I prevent a git merge confclit from "eating" changes?

我搞砸了另一个合并。当我在上面的行中进行更改时,我将两行压在一起并错过了第二行的一个小更改。

所以这里有冲突:

这就是我搞砸的地方:

看出区别了吗? Awaiting Fulfillment 需要小写。

那是我的错,但那不是我的 problem/question。

问题是,当我合并它时,看起来 Awaiting Fulfillment 从未更改过。 git blame 显示更改之前的提交,并且不是我的 b0rked 合并。拉取请求的差异还显示 对该行没有更改

这在我们身上发生过几次,我不太确定如何捕捉到它。我怎样才能让这些糟糕的合并变得清晰和容易找到?


这是我搞砸了的事情(我的工作流程):

1)我做一个分支,permissions

2) 我在 permissions

上工作

3) 完成后,我 git pull master

4) 修复合并冲突后,我将我的 permissions 分支推送到 GitHub,这样我就可以从那里发出拉取请求;现在我的团队正在研究 我的问题 我的新功能

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

这会产生以下两个问题:

查看合并提交,该行没有任何变化。第 658 行是 "untouched".

git blame 也没有显示更改它的冲突提交。就像从未改变过一样。

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


我尝试过的:

git reset --hard 回到我搞砸之前的那个点,摆弄 git pull --rebasegit rebase mastergit rebase permissions。我通过了 git pull --rebase 并以同样的问题结束( git blame 不清楚,并且很难找到搞砸了)。变基感觉就像一场死亡行军——太多的变化,我最终放弃了。


我觉得我在这里遗漏了一些重要的 git 概念,但我不确定从哪里开始阅读。

How can I make these bad merges clear and easy to find?

在 git 中,从 2.6.2 开始,您可以使用 blame --first-parent 查找已经在 master 中但被合并还原的更改。但要使其适用于您的情况(当更改已经在您的分支机构中恢复时),您应该责怪分支机构的负责人