git reset --hard,版本回去某到某一版本,对本机的版本产生影响,不对远程分支产生影响。
git revert,撤销某一个,或者连续的多个版本,会对远程分支产生影响。这根git reset反思想的。
git stash,保存当前状态,可以理解成存档,用在切换分支时,又不想commit当前分支时使用。
git restore,单纯的撤销
假如有以下版本:
1->2->3->4->5->6(当前版本)
1,git reset回滚版本4
1->2->3->4->5->6(当前版本)
reset回滚版本4,最新版本还是6,所以本地分支是落后于远程分支
zhangying test$ git reset --hard b02ada3d80830f8e9eca90fea259f92dca271424 HEAD 现在位于 b02ada3 a zhangying test$ git pull 更新 b02ada3..8b6559e Fast-forward .gitignore | 1 + abc => 2019/09/123 | 0 2019/09/hao | 0 2019/09/mytest123 | 0 2019/09/test | 0 test.conf | 46 ---------------------------------------------- 6 files changed, 1 insertion(+), 46 deletions(-) rename abc => 2019/09/123 (100%) create mode 100644 2019/09/hao create mode 100644 2019/09/mytest123 create mode 100644 2019/09/test delete mode 100644 test.conf
2,git revert撤销到版本4
1->2->3->4->5->6->4(当前版本)
git revert撤销到版本4,也就是说把5,6二个版本撤销掉,4就为最新版本了。
zhangying test$ git revert -n 3ae3fdcf030984292fac472984b877820357bd92^..98bdec8b3ba038b94ce869cdc1c5cc8fff8cf2ae 删除 hao.txt 删除 2 删除 1 zhangying test$ git commit -m 'revert' [master 807c99f] revert 4 files changed, 89 deletions(-) delete mode 100644 1 delete mode 100644 2 delete mode 100644 hao.txt delete mode 100644 index.php zhangying test$ git push
-n是将多次撤销,合并成一次commit。如果不加-n,多次都会多次commit
3,git stash保存当前修改,可以理解成存档
zhangying test$ git status 位于分支 master 您的分支与上游分支 'origin/master' 一致。 尚未暂存以备提交的变更: (使用 "git add <文件>..." 更新要提交的内容) (使用 "git restore <文件>..." 丢弃工作区的改动) 修改: ccc 未跟踪的文件: (使用 "git add <文件>..." 以包含要提交的内容) hao zhangying test$ git stash 保存工作目录和索引状态 WIP on master: 8b6559e Revert "Revert "aa"" zhangying test$ git stash list // stash@{0}: WIP on master: 8b6559e Revert "Revert "aa"" stash@{1}: WIP on a2: 3095ddd test zhangying test$ git status 位于分支 master 您的分支与上游分支 'origin/master' 一致。 未跟踪的文件: (使用 "git add <文件>..." 以包含要提交的内容) hao //未加入版本库的文件无效
4,git restore,单纯的撤销文件,"git restore <文件>..." 丢弃工作区的改动,不举例了。对未加入版本库的文件无效
转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/linux/2230.html