繁体   English   中英

如何在git pull上暂时忽略未跟踪的文件?

[英]How to temporarily ignore untracked files on git pull?

我有一些我没有添加到git的新文件; 我不确定我会不会,我还是犹豫不决。 但我想得到服务器中的最新信息。

但是,当我执行git pull我收到错误error: Your local changes to 'XXXX' would be overwritten by merge. Aborting. error: Your local changes to 'XXXX' would be overwritten by merge. Aborting. ,其中XXXX是我的新文件。

我如何告诉git从服务器下载更改和新文件,告诉我服务器上的内容与我对存储库中已有文件的本地修改之间可能存在的冲突,同时不会中止,因为我在本地有新文件?

我不想将它们添加到.gitignore,因为我经常遇到这种情况,我不想一直在添加和删除.gitignore中的文件,因为我不想这么做...冒着忘记某个文件的风险,我最终决定将它添加到存储库中,所以我希望git status能够不断告诉我这些文件。 有时我想忽略新文件时运行git status -uno ,然后有时我运行git status来查看新内容并确定要保留什么以及丢弃什么。 但我找不到git pull的等价选项。

我在谷歌搜索的尝试把我带到那些想要用存储库或其他类似场景中的内容覆盖他们的本地更改的人。 :(阅读文档后,我发现我可以做一个git fetch来使我的本地存储库更新,这不会产生任何错误,但它也没有将更改带到我的工作副本。我不能弄清楚之后的下一步。: - /无论如何,没有错误的pull将是理想的......

您必须首先存储它并在从远程控制器拉出或将当前分支重置为上次提交后应用更改。 重置分支将导致您丢失更改。

git stash

// after you have pulled from remote
git stash apply 
// OR
git stash pop

关于applypop之间区别的一个非常好的解释可以在这里找到


您还可以使用以下命令选择重置当前分支。

git reset --hard

你可能知道, git pull基本上是git fetch然后是git merge

失败的步骤不是git fetch ,而是git merge

 ... overwritten by merge 

注意这里的最后一个词是合并 这意味着你未定的:

我有一些我没有添加到git的新文件; 我不确定我会不会,我还是犹豫不决。

已经决定对你来说,别人的,至少一个这样的文件:特定的文件现在添加,在其他承诺。 这就是Git将覆盖的那个。

您现在可以选择各种选项:

  • 不合并(或不合并):您可以保留文件未跟踪。 我认为这很清楚,但它使情况得不到解决。 最终你(可能?)必须合并....

  • 合并: 跟踪文件。 然后,您可以选择Git如何处理现有的未跟踪文件:

    • 添加并提交。 Git将把你自己的变化与他们自己的变革合并。 据推测,两个更改都添加此文件 ,即文件不在合并库中。 这意味着冲突将是一个添加/添加冲突 ,这是一种痛苦。
    • 将您的文件版本保存在其他位置,删除未跟踪的文件。 让Git合并(作为快进或真正的合并,无论它做什么)。 手动合并您自己的更改,添加并进行自己的新提交。
    • 另一个人错了, 应该跟踪文件:将文件版本保存在别处。 让Git合并。 删除文件并提交,提交删除。 然后,您可以将自己未跟踪的文件放回原处。

还有一些额外的选项(例如rebase而不是合并)但是它们最终都是相同的情况:要么跟踪文件(因为它在你告诉Git要合并的提交中),要么你必须更新到那个提交, 删除该文件,并再次提交以进行不会跟踪该文件的提交。

“将文件保存在别处”的方式取决于您:例如,您可以完全将其从工作树中移出,或者您可以使用git stash进行具有该文件的提交。

当它工作时, git stash非常方便,但是因为它实际上使得两个或三个提交不在任何分支上,所以它是一个非常复杂的小动物,当它出错时它变得非常难以处理。 因此,对于任何本身可能很复杂的事情,我都希望避免使用 git stash 请注意, git stash默认只保存被跟踪的文件,所以你必须git add它才能进入git stash通常发出的两个提交。 您可以使用git stash -u专门进行第三次提交以保存未跟踪的文件,但这会使存储更难处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM