如何让GIT忽略我的更改

62

尽管标题与之前的问题类似,但我无法找到解决我的简单情况的方法:

  • 我提交了我的分支'ABCD':git commit -a ......
  • 然后决定访问以前的提交记录:git checkout 2387687326487
  • 在这里,我进行了一些仅用于测试目的的更改,我不想保留它们
  • 完成后,我想回到最新的提交记录(再次忽略我对旧提交所做的更改):git checkout 'ABCD'命令出现错误:

您对以下文件的本地更改将被覆盖,请提交或存储...

虽然我不想提交或存储等任何操作,我只想回家 :) 请问我该怎么做?


你好,根据您的问题,您似乎是指“在更改检出或分支时静默丢弃”。我的理解是否正确?在源代码控制领域中,“忽略”对我来说有更专业的含义;具体而言是:“从此(和/或未来)提交中排除被忽略的文件。” - Patrick M
5个回答

92

仅使用

git checkout .

该命令将放弃当前目录中(点表示当前目录)的所有未提交更改。

编辑针对 GokulNK 的回应:

如果您想保留这些更改以供将来使用,有两个选项:

  • git stash:这将在堆栈中保存这些更改。您可以稍后使用 git stash pop 将更改应用于您的工作副本。
  • git diff > changes.patch:这会将这些更改保存到文件 changes.patch 中。如果您想将它们应用于您的工作副本,则可以使用 git apply changes.patch

有没有办法在执行 git checkout . 命令之前将这些更改保存到文件中? - Gokul N K
git stash 完成了。谢谢! - Wes
迄今为止最简单的选择! - rebellion

48
如果你确定不想保留你的更改,以下这行代码可以实现:
git checkout -f 'ABCD'

选项“-f”代表强制执行。


18

撤销本地更改并返回到提交状态,您可以执行以下操作:

git reset --hard

它和 git reset --hard HEAD 是一样的吗? - alper
@alper 是的,HEAD 是默认设置,因此无论你显式地添加还是省略它,效果都是一样的。 - Marcin Koziński

14

除了提到的解决方案,您还可以暂存更改

git stash

检出你的分支

git checkout 'ABCD'

最终,当你确信不需要来自存储的更改,并已经通过gitkgitg进行了两次检查时,请丢弃存储:

git stash drop

那是我偏爱的方式,因为它更加安全。


1
这也是我做事的方式,安全可靠。 - triswill227

10

如果有人想忽略 Git 上的更改,但保留本地更改,可以使用以下命令:

$ git update-index --assume-unchanged <filepath>


2
+1 是因为它回答了问题的标题。但是问题的文本与标题无关。 - chpio

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