Appearance
git reset
git reset 是代码书写过程中的后悔药, 它可以重置当前目录,并且选择是否保留修改, 也可以修改已提交的message, 同时修改指针 HEAD
- git reset
commit-id
回退到指定 commit-id, 同时保留之前的内容到缓存区
注意: 指针回退到 commit-id
, 但是缓存区的代码不包含 commit-id
的提交
假设有上图时间线的 commit 提交, 如果执行 git reset c2
, 则发生的变化是
- 头部指针指到 c2
- c3-cN 提交的代码进入缓存区
- c3-cN 提交的 message 消失
- git reset .
将代码从 staged/cached 区移动到编辑区, 不改动文件代码
- git reset --hard
commit-id
回退到 commit-id, 不保存之前的所有记录和代码
这个操作比较危险, 适用于
- 清空提交
- 丢掉无用的代码
- 回退到某个 commit-id 进行测试操作, 回退之前确保已经 push 到远端,可以随时 pull 回来