我想撤销自上次提交以来的所有更改。我尝试了git reset --hard
和git reset --hard HEAD
,在查看此帖子后。它回应head is now at 18c3773...,但当我查看我的本地源时,所有文件仍然存在。我错过了什么?
我想撤销自上次提交以来的所有更改。我尝试了git reset --hard
和git reset --hard HEAD
,在查看此帖子后。它回应head is now at 18c3773...,但当我查看我的本地源时,所有文件仍然存在。我错过了什么?
这将取消暂存您可能使用git add
暂存的所有文件:
git reset
这将还原所有本地未提交的更改(应在存储库根目录中执行):
git checkout .
您还可以将未提交的更改仅还原到特定文件或目录:git checkout [some_dir|file.txt]
另一种撤销所有未提交更改的方法(打字时间更长,但可从任何子目录中起作用):
git reset --hard HEAD
这将删除所有本地未跟踪的文件,因此只有git跟踪的文件留下:
git clean -fdx
警告:使用
-x
选项将会移除所有被忽略的文件,包括由.gitignore
指定的文件!您可能需要使用-n
来预览要删除的文件。
总之,执行以下命令基本上相当于从原始来源进行全新的git clone
(但它不会重新下载任何内容,因此速度更快):
git reset
git checkout .
git clean -fdx
典型的用法是在构建脚本中,当你必须确保你的树是绝对干净的,没有任何修改或本地创建的对象文件或构建成果,并且你想让它非常快速地工作,而不是每次都重新克隆整个存储库。
git clean -fdx
命令删除了我的 node_modules
和 .env
文件,太好了。 - fires3as0ngit clean
对于这个目的毫无意义。 - Luxalpa如果您想要“撤销”所有未提交的更改,只需运行以下命令:
git stash
git stash drop
如果您有任何未跟踪的文件(通过运行 git status
来检查),可以通过运行以下命令来删除:
警告:此操作将删除所有未提交的数据,包括 .gitignore
中的内容
git clean -fdx
git stash
命令会创建一个新的存储,它将成为 stash@{0}。如果您想要先检查一下,可以运行 git stash list
命令来查看您的存储列表。它会类似于以下内容:
stash@{0}: WIP on rails-4: 66c8407 remove forem residuals
stash@{1}: WIP on master: 2b8f269 Map qualifications
stash@{2}: WIP on master: 27a7e54 Use non-dynamic finders
stash@{3}: WIP on blogit: c9bd270 some changes
git stash
之前需要使用 git add .
对更改进行分阶段处理,因为即使在使用 git stash
后,它也会显示未提交的更改。 - Eresgit stash --include-untracked
来获取所有文件,这样就不需要进行清理操作,以删除被忽略的文件了。 - esteuartgit stash -u
更好。千万不要运行 git clean -fdx
,否则它会删除被 Git 忽略的文件。 - Luxalpa我所做的是
git add . (adding everything)
git stash
git stash drop
一句话概括:git add . && git stash && git stash drop
根据M. Justin的指示,还有更短的版本:
git stash -u && git stash drop
-u
或 --include-untracked
参数创建储藏,可以省略单独的 add
步骤:git stash -u && git stash drop
。 - M. Justingit stash -u && git stash drop
对我很有帮助。 - Pathros因为之前的回答会永久删除你的更改,所以我添加了这个答案。
git stash -u
解释:存储本地更改,包括未跟踪的更改(使用-u
标志)。该命令将您的本地修改保存起来,并恢复工作目录以匹配HEAD提交。
git stash pop
解释:该命令将把更改重新应用到当前工作树状态的顶部。
git stash drop
解释:该命令将永久删除存储的条目。
撤销未被提交的更改的另一个选项是运行:
git restore <file>
放弃工作目录中的更改。git restore [文件路径]
例如,我需要放弃对index.html
文件所作的最新更改:
git restore /usr/myPC/folder/index.html
如果你想“撤销”所有未提交的更改或本地更改,只需运行:
git add .
git stash
git stash drop
git clean -fdx
git add .
- Aditya Jain.gitignore
中的所有文件。 - Omar Omeiri在 Git 中有三种选项可以撤消本地更改。
要查看在你的工作目录中所做的更改,你应该运行 git status 命令:
git status
使用git stash撤销更改
要放弃所有本地更改,但又想稍后使用它们,您可以运行git stash命令:
git stash
使用 git checkout 撤销更改
要永久放弃对文件的本地更改,可以运行以下命令:
git checkout -- <file>
使用git reset撤销更改
要永久地放弃对所有文件的本地更改,您可以执行以下操作:
git reset --hard
来源:https://www.w3docs.com/snippets/git/how-to-discard-unstaged-changes.html
如何放弃未暂存的更改?