8

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

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

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

4

3 回答 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不想提交的文件上运行,则需要unstage

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
于 2013-08-29T10:35:07.387 回答
7

在终端中运行以下命令:

git update-index --assume-unchanged

要让 Git 再次跟踪文件,只需运行:

git update-index --no-assume-unchanged path/to/file.txt
于 2014-07-01T11:51:36.890 回答
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
于 2013-08-29T10:31:27.660 回答