首页 > 其他 > 详细

Git 后悔药系列

时间:2021-04-22 09:16:09      阅读:29      评论:0      收藏:0      [点我收藏+]

Git 后悔药,指的是我们操作本地代码之后想要恢复之前的代码,所需要做的一系列操作,好像是做事后悔了,想要吃后悔药一样,生活中虽没有后悔药,但是 git 的世界中是存在的哦!

系列一:add 之前,也就是还没有添加到暂存区之前

# 注意跟切换分支不要搞混了,这个有两个横线,放弃对单个文件的修改
git checkout -- filename

# 放弃对所有文件的修改
git checkout .

系列二:add之后,commit之前

# 单个文件回到修改之后,add之前
git reset HEAD filename

# 所有文件回到修改之后, add之前
git reset HEAD .

系列三:commit 之后,push之前

# 回到add之后,commit之前
git reset --soft HEAD^

# 回到修改之后,add之前
git reset --mixed HEAD^

# 回到修改之前,放弃对文件的修改
git reset --hard HEAD^

# 可以恢复到之前任意版本
git reset --hard 提交版本号

push之后一次性回退多个提交,并把log合并为一条git revert + git rebase,

git revert 597ace36
:wq
git revert f187d3ef
:wq
git revert d301fafe
:wq
# 回退了三个版本之后会生成三个新的log
# 然后可以使用rebase 合并三个新的log
git rebase -i 597ace36
# 注意 -i 后面的参数是不需要合并的 commit 的 hash 值,这里即从当前时间往前推的第四个提交,包括新生成的三个提交log
#pick 的意思是要会执行这个 commit
#squash 的意思是这个 commit 会被合并到前一个commit
# 把后面两个pick修改成 squash
:wq
# 然后进入编辑合并日志的模式,把其中两个 Revert 注释注释掉,只剩一个合并日志如下:
#Revert "后悔药系列,revert三个之后合并为一个注释rebash"
    
#   This reverts commit 597ace360be8f00575bae40d5bf9bfea551a1c48.
    
#   This reverts commit f187d3ef9c9eb0de74b4ad6c0fa5854b0e612539.
    
#   This reverts commit d301fafe75cb5fadf5b98f0711c39243e4174e34.

:wq

Git 后悔药系列

原文:https://www.cnblogs.com/yunqing/p/14687311.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!