基本操作
git log
:查看提交历史。在Git中,每一次提交都会生成一个独特的ID,我们可以通过这个ID来定位到特定的提交。git checkout <commit-id>
:切换到指定的提交。这样,你就可以在这个提交的状态下进行工作。git reset --hard <commit-id>
:用指定的提交替换当前的工作区。这将撤销工作区中所有在指定提交之后发生的更改。git revert <commit-id>
:创建一个新的提交,用来撤销指定的提交。这不会改变历史记录,而是创建一个新的更改来抵消指定的提交。
实用技巧
- 回退到上一次提交:
git reset --hard HEAD~1
。这将撤销上一次提交的所有更改。如果你想保留这些更改的记录,可以使用git revert HEAD~1
来创建一个新的提交,撤销上一次的更改。 - 放弃所有未提交的更改:
git reset --hard HEAD
。这将撤销所有未提交的更改,返回到最近一次提交的状态。 - 找回误删除的文件:如果你意外删除了一个文件,并知道最后一次提交包含了这个文件,你可以通过
git checkout HEAD~1 -- <file-path>
来找回这个文件。 - 撤销错误的改动:如果你对某个文件做了错误的改动,并想撤销这些改动,你可以使用
git checkout HEAD -- <file-path>
来撤销指定文件的更改。 - 回退到特定的提交,并撤销此后的所有更改:
git reset --hard <commit-id>
。这将用指定的提交替换当前的工作区,撤销此后的所有更改。这个操作会丢失所有在此次提交之后发生的更改,所以请谨慎使用。 - 创建一个新的分支来保存当前的更改:如果你想保留当前的更改,但是又想回到上一个提交的状态,你可以创建一个新的分支,然后在新的分支上进行回退操作。
git checkout -b <new-branch>
来创建一个新的分支,然后在这个分支上进行回退操作。
注意事项
- 回退操作会丢失你回退之后的所有的更改,包括提交和暂存的更改。所以在执行回退操作之前,请确保你已经备份了重要的更改。
git revert
和git reset --hard
的主要区别在于,git revert
创建一个新的提交来撤销指定的提交,而git reset --hard
直接用指定的提交替换当前的工作区。前者保留了撤销操作的记录,后者则直接删除了这些记录。- 在使用
git reset --hard
时,要特别小心。如果你在这个操作之后又进行了其他的更改,这些更改将会丢失。 - 使用Git的版本回退功能时,请务必谨慎操作,确保你对即将进行的操作有充分的理解。如果你不确定自己的操作,建议先在测试环境下进行尝试。