关于branch:git:如何在提交时忽略对文件的更改?

git: How to ignore changes to a file when committing?

我确实在寻找解决方案,但我相信我的处境与我读到的有些不同。

我正在处理一个特定的分支,犯了一个错误,以一种与分支主题无关的方式编辑了一个文件,现在我希望这些更改不会使其进入提交状态。我不想丢失这些更改,因为稍后我将尝试以某种方式在另一个分支上提交它们。

我试过git rm --cached,但是我看到deleted在我的git status中的状态,文件会从存储库中删除吗?我不想这样-我希望它与我的工作分支上以前提交的任何内容保持不变。


如果您不准备这些更改,它们将不会成为提交的一部分,如下所示:

1
2
3
4
5
6
7
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,则需要执行unstage

1
git reset HEAD <file>

这样地:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ 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


在终端中运行以下命令:

1
git update-index --assume-unchanged

要使git再次跟踪文件,只需运行:

1
git update-index --no-assume-unchanged path/to/file.txt


可能的解决方案之一:

1
2
3
4
5
6
7
8
git stash
git checkout
git stash apply
git add <one-file>
git commit
git stash
git checkout <original-branch>
git stash apply