Git 有三种状态,你的文件可能 处于其中之一: 已提交(committed)、已修改(modified) 和 已暂存(staged)。
• 已修改表示修改了文件,但还没保存到数据库中。
• 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
• 已提交表示数据已经安全地保存在本地数据库中。
这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录。
git add
是将工作区已修改的文件提交到暂存区
git commit
是将暂存区的文件提交到Git 目录
如果执行git add
之后,发现误添加了某个文件提交到了暂存区,可以通过以下命令撤回到工作区:
git reset HEAD <文件名>
如果想将所有暂存区的文件撤回到工作区:
git reset HEAD
如果执行git commit
之后,因为某种原因想撤销提交但仍然保留commit之前的修改,可以通过以下命令撤销提交:
# 将暂存区最近一次提交到Git目录的文件全部撤回到暂存区
git reset --soft HEAD^
如果想将git commit
和git add
一并撤回:
# 将暂存区最近一次提交到Git目录的文件全部撤回到暂存区,且将暂存区的文件全部撤回到工作区
git reset --mixed HEAD^
# 等同于该命令
git reset --soft HEAD^ && git reset HEAD
如果不想保留最近一次提交的所有修改:
git reset --hard HEAD^