如何在Git中跟踪文件

7
我曾多次在git中删除一个文件,但由于其他分支的合并,它总是再次出现;我猜可能是这样的原因:
                      o--  a topic  --o
                     /                 \
o-- [create file] --o-- [delete file] --o-- [file exists again]

因为我们使用“内部发布”方式,即我创建发布分支并推送,我们的发布经理将其拉取并合并到主分支,然后我再拉取他的主分支,所以对我来说很难理解正在发生什么。

请问如何查找我(或其他人)删除文件的位置以及重新引入该文件的合并操作?谢谢!


1
你能想出一个简单的场景,让你的文件重新出现吗?我无法复制那个问题。 - Mat
2个回答

2
当您在一个分支中删除文件,然后合并另一个包含该文件的分支时,该文件将保持删除状态。即使您在分支中删除了该文件并将其与其他分支合并,它仍将被删除。
如果在合并过程中向该文件添加了一些内容,则会出现冲突,并且您必须显式添加此文件并提交以使其回到您删除的分支中。
git log中有--follow参数。

--follow

Continue listing the history of a file beyond renames (works only for a single file).
但我不确定这是否是您在此寻找的。您还可以查看git log手册中的历史简化 - http://git-scm.com/docs/git-log

不好意思,那只显示了一些提交记录,但并没有显示文件发生的其他变更。 - Jonas Byström
感谢您的编辑,我暂时会接受您的答案,但是文件的删除似乎丢失了。我认为最有可能的原因是在我们更改发布程序时,我在某个时候覆盖了分支。 - Jonas Byström
请注意,这是避免使用 git add . 的一个很大的原因,特别是在合并时:很容易将已删除、冲突的文件提交,或者将一些冲突标记添加到您的仓库中... - cmaster - reinstate monica

0
发生的情况是,在合并topic分支时,它包含一个在main分支中不存在的blob/object,因此合并将创建一个包含topic分支状态的文件。为了防止这种行为,我会反过来合并(将main合并到topic)或将topic rebase到main上。问题在于,如果您更改了topic中的文件,则它将尝试将更改应用于main,从而重新创建该文件。

很遗憾我无法将主分支合并到话题分支,因为我们正在遵循内部发布流程,但是你提出的文件再次出现的原因可能是正确的。不过我仍然不知道如何追踪这个文件。 - Jonas Byström

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接