2

我正在与 git 存储库中的两个协作者一起工作。我最近在本地提交了一些更改,然后从我们的 github 存储库中提取了该工作。这引起了我解决的几个冲突。然而,除了导致这些小冲突的拉取之外,我现在在我的本地存储库中还有一堆其他文件标记为已更改。检查文件的差异,我可以看到这些是我的合作者必须做出的改变。我认为他们一定已经提交了它们,因为那将是它们最终出现在我的本地存储库中的唯一方式。但是,他们提交的更改如何最终出现在我的本地存储库中,就好像它们是我现在需要提交的更改一样?PS我可能是一个长期的Subversion用户,对git很陌生......

根据下面的评论和@wmfairuz 的回答,我了解到,当我在本地提交对文件 A 的更改时,拉一个修改文件 A 和 B 的变更集,我需要在解决 A 中的更改后提交两个文件 A 和 B,即使我的冲突解决方案只修改了文件 A,对吗?

现在,问题实际上有点复杂。我实际上已经提交了对文件 A 的更改,此外,我还对一组文件 C 进行了未提交的更改。我不希望提交文件 C - 它们主要是存储在存储库中的 LaTeX 和 Python 输出文件,以便于更新由于在其源上运行 Python 和 LaTeX,但我不想记录这些更改。然后我提取了一个修改文件 A 和一组文件 B 的变更集。由于我对 git 的无知,在提交已解析的文件 A 时,我取消了对文件集 B 的自动暂存更改。现在我无法再区分集 C 和B. 我应该怎么做才能正确完成合并并避免以某种方式破坏文件集 B?

4

1 回答 1

2

这是正常的。

假设冲突文件是修改文件 A(冲突文件)和文件 B 的提交的一部分。当合并失败时,提交处于挂起状态,直到您修复冲突并自行合并。因此,在您的情况下,文件 B 显示为已更改文件是正常的。

因此,在每次合并冲突时,您需要做的是:修复冲突,添加冲突文件并添加提交中的所有更改文件。然后合并。所以最后,你会有一个稍微不同的提交(文件 A 略有不同 + 文件 B 的正常更改)

于 2013-03-28T22:29:18.507 回答