git - 为什么 git pull 会导致我没有做的本地更改

标签 git github git-diff

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

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

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

最佳答案

这很正常。

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

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

关于git - 为什么 git pull 会导致我没有做的本地更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15692216/

相关文章:

xcode - 为现有项目创建 git 存储库?

git - 以编程方式确定 Git 分支状态的正确方法是什么?

java - 没有开发分支的特征分支模型的Git分支策略

Git 提交补丁

git - 如何 `git clone` 不包括子模块?

html - github页面和相关链接中的图像

git - 是否有用于非 GitHub 项目的 "impact graph"工具?

android - 在Android项目中使用开源库

git - 如何让 git log 显示相对于当前目录的文件路径?

git - 如何在 gitk 中设置 diff 选项(--compaction-heuristic)