git回退
git回退
- 清除未跟踪的文件
git clean -dxf
清除所有未跟踪文件,包括纳入ignored的文件。
如果要保留ignored的文件修改,使用参数-df - 本地修改后,回退还没有缓存的文件(没有执行$git add a.txt)
$vim a.txt
$git checkout a.txt - 本地修改后,回退已经缓存的文件git reset HEAD <文件路径> (撤销缓存)
git checkout 文件路径 (回退修改) - 本地修改后,回退已经提交的文件 (已经执行 $git commit -am "message" )$vim a.txt$git commit -am "message" a.txt$git reset master~1 (master分支向前回退一个提交)这是,a.txt 的这次提交已经被取消了, 这是的状态是a.txt 刚被修改的状态,可以用$git checkout a.txt 回到a.txt 被修改前的状态。
- 情景3 将a.txt 文件回退到某个版本$git log a.txt选择回退的SHA1值,$git checkout SHA1 a.txt此时a.txt 是 SHA1时的文件内容
注意这种方式只回退了文件内容,原来的提交的commit 信息还在 - 本地进行了修改但不想要了直接回退到最后一次提交
- 先用git add . 目的是如果有新添加的文件但还没有用git add . 纳入版本控制则先把它纳入版本控制。否则git reset --hard 时不能把这些文件删除
或者使用git clean -dx先把新添加未纳入版本控制的文件删除 - 再用git reset --hard HEAD