如何让GIT忽略我的更改

rah*_*man 45 git

虽然标题似乎与之前的问题类似,但我无法找到解决我的简单案例的方法:

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

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

虽然我不想承诺或藏匿或其他什么.我只想回家:)我该怎么办?

Car*_*rós 70

使用正好

git checkout .
Run Code Online (Sandbox Code Playgroud)

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

编辑以回应@GokulNK:

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

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


Nic*_*bey 40

如果您确定不想保留更改,则以下行将执行以下操作:

git checkout -f 'ABCD'
Run Code Online (Sandbox Code Playgroud)

选项'-f'代表强制.


Mar*_*ski 15

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

git reset --hard
Run Code Online (Sandbox Code Playgroud)


ste*_*fen 11

除了上述解决方案,您还可以隐藏更改

git stash
Run Code Online (Sandbox Code Playgroud)

结帐你的分行

git checkout 'ABCD'
Run Code Online (Sandbox Code Playgroud)

最后,当你确定你不需要任何隐藏的更改中的任何内容,并使用gitk或检查两次时gitg,扔掉存储:

git stash drop
Run Code Online (Sandbox Code Playgroud)

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


Jox*_*ina 10

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

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

  • +1,因为它回答了问题的标题。但问题的正文与标题无关。 (2认同)