为什么git pull会导致我没有做出的局部更改

时间:2013-03-28 21:09:09

标签: git github git-diff

我正在使用git存储库中的两个协作者。我最近在本地进行了一些更改,然后从我们的github回购工作中提取。这引起了我解决的几个冲突。然而,随着引起这些小冲突的拉动,我现在在我的本地存储库中有一些标记为已更改的其他文件。检查文件的差异,我可以看到这些是我的合作者必须做出的改变。我认为他们必须已经提交了它们,因为这将是他们最终在我的本地存储库中结束的唯一方式。但是他们的改编最终如何才会出现在我的本地存储库中,好像它们是我现在需要提交的更改? 附:我可能会成为一名长期的Subversion用户,对git来说还是新手......

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

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

1 个答案:

答案 0 :(得分:1)

这是正常的。

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

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