????假设这样一个场景,产品提一个功能需求,你开发完,然后commit了;第二天产品说那个功能不要了,你说可以,然后reset回去;又过两天,产品又对你说,那个功能还是加上去吧,这时候你心里是不是有一万只草泥马奔驰而过,怎么办?代码已经在reset之后做过修改,有了新的commit了啊,难道要重新开发?还是回退?
? ? 其实不要慌,git早已经考虑到了这种情况,这时候就是cherry-pick发挥特效的时候了
第二次commit
commit 86adfc7611154f57dc750ca25a707743b483dd49 (HEAD -> demo)
Author: libinbin <libinbin@ainirobot.com>
Date:? ?Sat May 19 17:08:48 2018 +0800
第一次commit? ?
commit 004ff75d9ccf27b6721f6b6ea86efa92319f4102
Author: libinbin <libinbin@ainirobot.com>
Date:? ?Sat May 19 17:08:15 2018 +0800
回到第一次commit
$ git reset --hard 004ff75d9ccf27b6721f6b6ea86efa92319f4102
HEAD is now at 004ff75
第三次commit
$ git commit
[demo 7b1e2c6]
?1 file changed, 1 insertion(+)
查询日志
$ git log
commit 7b1e2c6bd3851732d0d3e1d01169cd31042b64bc (HEAD -> demo)
Author: libinbin <libinbin@ainirobot.com>
Date:? ?Sat May 19 17:26:33 2018 +0800
? ? 第三次commit
commit 004ff75d9ccf27b6721f6b6ea86efa92319f4102 (HEAD -> demo)
Author: libinbin <libinbin@ainirobot.com>
Date:? ?Sat May 19 17:08:15 2018 +0800
? ? 第一次commit
commit 32b1d3055a25bea5b1d86b85cffe3ba79aa81327
Author: libinbin <libinbin@ainirobot.com>
Date:? ?Sat May 19 17:05:58 2018 +0800
? ? otademo本地git库
git reflog
$ git reflog
7b1e2c6 (HEAD -> demo) HEAD@{0}: commit: 第三次commit
004ff75 (HEAD -> demo) HEAD@{0}: reset: moving to 004ff75d9ccf27b6721f6b6ea86efa92319f4102
f2bf3c0 (master) HEAD@{2}: cherry-pick: 第二次commit
git cherry-pick
$ git cherry-pick f2bf3c0
[demo 0ece56f] 第二次commit
?Date: Sat May 19 17:08:48 2018 +0800
?1 file changed, 1 insertion(+), 1 deletion(-)
查询日志
$ git log
commit 0ece56f60e1cd8a41374f4ec351d519b7be55f89 (HEAD -> demo)
Author: libinbin <libinbin@ainirobot.com>
Date:? ?Sat May 19 17:08:48 2018 +0800
? ? 第二次commit
commit 7b1e2c6bd3851732d0d3e1d01169cd31042b64bc
Author: libinbin <libinbin@ainirobot.com>
Date:? ?Sat May 19 17:26:33 2018 +0800
? ? 第三次commit
commit 004ff75d9ccf27b6721f6b6ea86efa92319f4102
Author: libinbin <libinbin@ainirobot.com>
Date:? ?Sat May 19 17:08:15 2018 +0800
? ? 第一次commit
commit 32b1d3055a25bea5b1d86b85cffe3ba79aa81327
Author: libinbin <libinbin@ainirobot.com>
Date:? ?Sat May 19 17:05:58 2018 +0800
? ? otademo本地git库
可以看出"第二次commit"又找回来了
原文链接:https://blog.csdn.net/libinbin147256369/article/details/80375977
原文:https://www.cnblogs.com/qiqi715/p/11496263.html