如何在Git提交时忽略文件的更改?

8

我已经搜索了解决方案,但我认为我的情况与我读到的那些略有不同。

我正在处理一个特定分支,犯了一个错误,编辑了一个与分支主题无关的文件,现在希望这些更改不会进入提交。 我不想丢失这些更改,因为我将尝试在另一个分支上提交它们,无论如何都要提交。

我尝试过使用git rm --cached,但是然后我在git status中看到删除状态 - 文件将从存储库中删除吗? 我不希望这样 - 我希望它与在我的工作分支上先前提交时保持不变。


1
不要将某些文件暂存。这是 Git 的完全正常和微不足道的用法。每次提交时,您都会经常这样做。您正在使用 git add .git commit -a 吗?停止使用它们,开始每次都使用 git add -p - user229044
3个回答

11

如果您不将更改放入暂存区,它们将不会成为提交的一部分,就像这样:

git status
# On branch development
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   ResearchProposal.tex

这里,ResearchProposal.tex发生了更改,但是这些更改不会被git commit提交。

如果你在单个文件中有两组更改,其中一些你想要提交,而另一些则不需要,请阅读此内容

如果您已经使用git add命令添加了一个您不想提交的文件,则需要执行取消暂存操作:

git reset HEAD <file>

像这样:

$ git add ResearchProposal.tex
$ git status
# On branch development
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   ResearchProposal.tex

$ git reset HEAD ResearchProposal.tex 
Unstaged changes after reset:
M   ResearchProposal.tex

$ git status
# On branch development
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   ResearchProposal.tex

该文件被列在待提交的更改列表中。我不知道它是怎么出现的,可能是因为我之前意外地执行了add命令,或者是其他原因。所以我猜现在我需要想办法让它出现在“未暂存的更改”列表中,这正是我想要的,对吧? - Armen Michaeli
1
使用 git reset <file> 命令来取消暂存文件,或者使用 git reset . 命令来取消暂存所有文件,使用 git add -p 命令来选择性地暂存文件。 - user229044

7

在终端中运行以下命令:

git update-index --assume-unchanged

为了让Git重新跟踪该文件,只需运行以下命令:
git update-index --no-assume-unchanged path/to/file.txt

1
一种可能的解决方案:

git stash
git checkout <another-branch>
git stash apply
git add <one-file>
git commit 
git stash
git checkout <original-branch>
git stash apply

有没有一种方法可以让 git stash 只存储单个文件?我不需要存储整个工作目录,只需要一个文件。 - Armen Michaeli
看起来@simont的回答是我所需要的。感谢提供另一种选择 :-) - Armen Michaeli
1
@amn:在“git”中,你可以用多种方式完成一件事情。选择最适合你的方式即可。 - Sergey K.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接