当我们在说放弃本地修改(注意:这里指还没有push到远端仓库)的时候,我们是在说如下几种场景:
git reset --hard HEAD
git checkout <file1>
git reset <file>
git reset HEAD^
git format-patch HEAD^^
,备份用,修改完成后就删掉;git reset HEAD^^
,这个命令会将HEAD回退到两个版本之前,但工作区中的内容还是最新版本,也就是说,现在工作区中的文件是两次修改的总和。git commit
提交到本地仓库;这样的好处是提交记录是干净的。坏处是,提交不够原子性。git format-patch HEAD^^
,备份用,修改完成后就删掉;git reset --hard HEAD^^
;git apply 0001-xxxx.patch
,然后修改问题,之后执行git commit
;git am 0002-xxx.patch
注意这里第一个命令用的
git apply命令
,这个命令不会直接生成一个commit,第二个用的git am
命令,这个会直接生成commit;这刚好是我们需要的结果。同时,这个方案也有局限性,就是在两次修改了同一个文件的时候,可能会出现冲突,需要手动修复。
关于场景4中:
【文章不错,鼓励一下】