我的Git存储库遇到了一个令人费解的问题。我对一些文件进行了明确的更改,例如我的仓库中的queue.php:
我一段时间地提交了更改,并将其推送到存储库。
在a8a76d4,我的更改被推送到存储库。
在2cd4666上,它显示我的更改已被明确删除,但我的同事坚定不移,他从未编辑此文件,也没有发生冲突。
这在过去一直是个问题,并且一直在发生。我怀疑开发人员正在使用GUI,当出现冲突时,他们只需点击“使用我的解析”。但是对于这个文件,这似乎不太可能,因为它没有其他变化。
当人们声称从未接触过这些文件时,我无法弄清楚为什么我的更改会被丢弃。
我们将在我们的工作流程中采用一种新的方法,开发人员需要分叉并提出拉取请求,但我仍然试图理解为什么会像这样覆盖更改。
有什么想法吗?
答案 0 :(得分:3)
如果你使用git blame,你可以看到哪个提交对任何给定的代码行负责:
> git blame queue.php
...
xxxxxxx queue.php Author Date 47) 'queue' => 'default'
然后,您只需要查看负责确定如何/为何如此制作的提交:
> git show xxxxxxx
commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Author: Derp Diggler <email>
Date: The date
Unwittingly screw things up
By the gods, we'll have no tms
diff --git ...
当然,这只会确认您已经知道的内容 - 提交2cd4666
负责,问题的其余部分不是编程问题 - 它是有机的=)。
或者,如果queue.php
是开发人员认为要编辑以配置其本地安装的文件,则根本不应该对其进行跟踪。
在初始化应用程序时,请考虑将名为queue.default.php
的文件提交到开发人员复制到queue.php
的存储库。或者,任何其他解决方案,用户可以在不修改跟踪文件的情况下更改其应用程序的配置。
Some interesting reading沿着这些方向。