git rm

  • 删除本地文件,并且将删除加入暂存区,以便下次提交时删除文件。

  • 为防止误删本地修改,如果文件被修改过,无论修改是否加入暂存区,均需要加-f选项。

  • 使用--cached,仅将删除加入暂存区,而不删除本地文件。

git checkout

文件级别

git checkout -- <path>

从暂存区(也叫做索引区)恢复文件,如果修改已经加入暂存区了,就不能恢复,应先使用git reset HEAD 将修改回退到未暂存状态

提交级别

git checkout <commit>

切换到某个提交(分支是一次提交指针)上,命令执行成功后,所有文件和该次提交一致。如果本地有修改未提交,则必须提交或储藏(git stash)

git reset

文件级别

git reset commit <path>

将暂存区该文件重置到某次提交状态,不会修改工作目录文件,工作目录文件原更改会放入未暂存。

例如原始文件内容

1
2

假设重置的该次提交对应文件内容为

1

则命令执行后

暂存区

-2

未暂存

+2

提交级别

git reset --soft <commit>

移动HEAD指针到某次提交。此时更新暂存区再提交就相当于恢复提交git commit --amend

git reset [--mixed] <commit>

移动HEAD,并且将该次提交的更改回退到暂存区

git reset --hard <commit>

移动HEAD,回退该次提交的更改到暂存区,然后回退该次提交的工作目录文件的修改