【问题标题】:How to ignore file in git如何忽略git中的文件
【发布时间】:2021-09-16 17:00:34
【问题描述】:

我需要在本地处理file.txt

我在 github 中克隆了一个项目,我在本地修改了这个 file.txt

当我这样做时

git checkout .
git pull --no-edit

file.txt 已更改,因为远程更改它。

如何忽略file.txt 不在本地更新。

文件在这个目录中,a/file.txt。我尝试在.gitignore.git/info/exclude 中添加此文件,但始终远程更新此文件会在本地覆盖我的文件。

如何忽略本地未修改的文件,远程始终更新 .gitignorea/file.txt

【问题讨论】:

  • 这不是 .gitignore 的用途。尝试 stash、pull 和 unstash 以保留您的更改。但是,您将不得不处理冲突。
  • "file.txt 已更改,因为远程更改它" 不,file.txt 已更改,因为您说 git checkout . — 你为什么会这么说?基本上,该命令的意思是“请销毁我当前的所有工作”。当这种情况发生时,你几乎不会感到惊讶。
  • 那么如何获取更新呢?我想更新 repo 但只有两个文件没有更新。
  • 嗯,这就是答案试图告诉你的。

标签: git git-pull


【解决方案1】:

尝试不使用git checkout,因为这可能是您丢失工作的地方,请检查文件到本地 HEAD 的状态。而是使用git pull

如果 repo 中的文件已被其他人更新,您应该合并他们的更改对吗?

【讨论】:

  • 问题是我想更新其他文件只有这两个文件不是。不明白最后一部分,我只希望我的文件不被远程更新,我不想将我的文件更新到远程。
【解决方案2】:

如果文件已经被推送到远程存储库(显然是,因为您拉取并获取更新),那么.gitignore 将无济于事。 .gitignore 适用于您甚至不想首先将文件提交到 git 的情况。

你所描述的是违背 git 直觉的东西。

因此,您从远程存储库中提取,而其他人更改了文件 - 很好,这意味着该文件“完成了一些工作”。 Git,作为一个源代码管理系统,非常适合这一点。现在你说同时你也改变了文件。但是现在你打算如何处理这个变化?如果您想在工作的一部分中提交此更改,那么您就会遇到冲突 - 您应该自己解决一些问题,以便该文件将包含其他人所做的更改和您的更改。

如果你不想提交文件,那有什么意义呢? 当然,您可以将其复制到一边,拉出所有内容并“粘贴”文件,最后 git 有点假设您会将更改保留在 git 中。

现在,话虽如此,您可以“强制” git 以一种始终有利于您的更改而不是在远程仓库中完成的更改的方式来处理冲突。 您可以在git pull 操作期间指定一个合并策略作为参数,可能您对名为“ours”的策略感兴趣。

你可以阅读合并策略Here

【讨论】:

  • 我认为所有人都误解了我想要的东西,因为我是 git 中的菜鸟。我试图更好地解释。我在我的计算机中克隆了 repo,但我在本地修改了两个文件,因为这个 repo 有更新,我想要更新,但是在这些更新中,更新了我修改的文件,所以我想防止不给我这些更新。我只想将其保存在我的计算机中,而不是提交或远程调用任何内容。
  • 在这种情况下 - 阅读合并策略 - 我发布的链接 :)
【解决方案3】:

问题是我想更新其他文件只有这两个文件不是

是的,我有同样感觉的配置文件。但是没有简单的自动解决方案。基本上,如果我想保留文件的本地版本 a.txt 同时从远程更新其他所有内容,我会说

git stash

那我会

git fetch
git merge 

然后我会恢复文件的隐藏版本:

git restore --source stash@{0} -- a.txt

【讨论】:

    【解决方案4】:

    不用git checkout .,你可以:

    • 确保本地忽略 file.txt

    见“Git - Difference Between 'assume-unchanged' and 'skip-worktree'

    试试:

    git update-index --skip-worktree -- file.txt
    git pull
    

    file.txt 不会被git pull 更新。

    完成 file.txt 后:

    git update-index --no-skip-worktree -- file.txt
    

    【讨论】:

      猜你喜欢
      • 2012-01-21
      • 2013-10-04
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      • 1970-01-01
      • 2011-01-20
      相关资源
      最近更新 更多