58

尽管标题似乎与以前的问题相似,但我找不到我的简单案例的解决方案:

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

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

而我不想提交或隐藏或其他任何东西。我只想回家:) 请问我该怎么办?

4

5 回答 5

88

只使用

git checkout .

将丢弃当前目录中任何未提交的更改(点表示当前目录)。

编辑以回应@GokulNK:

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

  • git stash:这会将这些更改保存在堆栈中。您可以稍后将更改应用于您的工作副本git stash pop
  • git diff > changes.patch: 这会将这些更改保存到文件changes.patch中。如果您想将它们应用于您的工作副本,您可以这样做:git apply changes.patch.
于 2012-07-24T09:54:45.470 回答
47

如果您确定不想保留更改,则可以使用以下行:

git checkout -f 'ABCD'

选项“-f”代表力。

于 2012-07-24T09:46:06.083 回答
18

要撤消本地更改并从提交返回状态,您可以:

git reset --hard
于 2012-07-24T09:50:35.703 回答
14

除了提到的解决方案之外,您还可以隐藏更改

git stash

结帐您的分支

git checkout 'ABCD'

最终,当您确定不需要隐藏更改中的任何内容并使用gitkor检查了两次时gitg,请丢弃存储:

git stash drop

这是我的首选方式,因为它更安全。

于 2012-07-24T10:00:10.530 回答
1

如果有人想忽略 git 上的更改但将它们保留在本地,您可以使用:

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

于 2021-09-28T23:09:59.413 回答