撤销提交的代码。
stash的应用
在Git中,有多种撤回提交或更改的方式,取决于你想要完成的具体操作:
-
git reset --soft: 这个命令会移动HEAD指针到指定的提交,并将中间的提交添加到暂存区,但不会更改工作目录。这通常用于撤销提交,但保留更改以供再次提交。
例如,要撤销最后一次提交,可以使用以下命令:
git reset --soft HEAD~1
-
git reset --mixed: 这个命令将移动HEAD指针到指定的提交,并将中间的提交撤销到工作目录,但不会更改暂存区。这通常用于撤销提交,并将更改移回工作目录,但不将它们标记为待提交。
例如,要撤销最后一次提交并将更改移回工作目录,可以使用以下命令:
git reset --mixed HEAD~1
-
git reset --hard: 这个命令将会撤销到指定的提交,并且会清除暂存区和工作目录的所有更改。这是一个破坏性的操作,因此请谨慎使用。
例如,要彻底撤销最后一次提交以及任何未提交的更改,可以使用以下命令:
git reset --hard HEAD~1
-
git revert: 这个命令会创建一个新的提交,该提交的更改与你要撤销的提交的更改相反。这意味着你的提交历史不会改变,但你的代码会回退到指定提交之前的状态。
例如,要撤销最后一次提交并保留提交历史,可以使用以下命令:
git revert HEAD
-
git checkout: 如果你想要丢弃工作目录中的所有未提交的更改,可以使用这个命令。这不会影响提交历史。
例如,要丢弃工作目录中的所有未提交的更改,可以使用以下命令:
git checkout -- .
-
git stash: 这个命令可以保存工作目录和暂存区的当前状态,以便稍后恢复。这对于你需要临时切换到其他任务,但不想提交当前的更改非常有用。
例如,要保存当前的更改并清空工作目录和暂存区,可以使用以下命令:
git stash
然后,你可以使用以下命令来恢复之前的更改:
git stash pop
请注意,这些命令中的一些(特别是git reset --hard
和git checkout
)可以删除你的更改,因此在使用前请确保你了解它们的行为,并确保你的重要更改已经保存或提交。
git restore
是在 Git 2.23 版本中引入的一个新命令,它的主要目的是将一些常用的工作流程与 git checkout
命令分离,使得 Git 命令更加直观和易于理解。
git restore
命令主要用于撤销工作目录或暂存区(也就是 Git 的索引)的更改。这是一个安全的操作,因为它不会影响 Git 仓库中的提交历史。
以下是 git restore
的一些常见用法:
-
恢复工作目录中的文件:如果你在工作目录中修改了一个文件,但现在想要丢弃这些更改并恢复文件到上次提交的状态,你可以使用
git restore
:git restore my-file.txt
这将会撤销
my-file.txt
中的所有未提交的更改。 -
从暂存区恢复文件:如果你已经使用
git add
将一个文件添加到了暂存区,但现在想要撤销这个操作并将文件恢复到未添加状态,你可以使用git restore --staged
:git restore --staged my-file.txt
这将会从暂存区移除 my-file.txt
,但不会撤销对文件本身的更改。
在使用 git restore
命令时,请注意它只会撤销未提交的更改。一旦你使用 git commit
创建了一个新的提交,这些更改就会成为 Git 仓库的历史的一部分,此时你需要使用其他的 Git 命令(例如 git revert
或 git reset
)来撤销它们。