阿威十八式之git

今天和代码合错了,有a,b两个分支,想要a合到b,结果翻车了,b合到a了.我不想要.
退回方法,git show,查询当前提交:
C:xxx>git show
commit 601223xxx1d9570ad03xxxafe96f5d (HEAD ->b)
Merge: bbbssb482d (1) aassadf38608(2)
Date: Fri Nov 27 10:05:18 2020 +0800
Merge branch ‘b’ into a
Merge中的两个参数,就是两个提交,一个是被合并分支的,一个是当前分支的,前面一个用1表示,后面一个用2表示. 这个是有用的.
这时候我应该用这个命令进行回滚:
git revert huangjin_dev -m 2
其中: -m 2是代表具体回滚那个提交. 由于第一次,我思来想去,选择了2,结果TMD又翻车了.
指定了2,结果回滚的是当前分支的代码,不是被合并分支代码.然后我赶紧再去revert.
结果他就在我的上一次revert之后来回跳.就比如,我revert一下之后:
你好 变成 : helleo
我再revert一下之后:
hello 变成 你好
妈耶,心态不稳.
然后有回退命令:
$ git reset --hard HEAD^ 回退到上个版本
$ git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前
$ git reset --hard commit_id 退到/进到 指定commit的sha码
呵呵,我一个没用. 怕崩.
然后我尝试根据commit_id,也就是这个: commit 601223xxx1d9570ad03xxxafe96f5d (HEAD ->b)
回滚到指定的那个提交. 但是他提示我选择指定分支: 这时候我意识到机会来了:
git revert 601223xxx1d9570ad03xxxafe96f5d -m 1 这个时候,我选择了1
然后看commit的内容.发现有很多类被改动了,但是不是取消了提交,而是好像在原来的提交中,回滚了.
嗯,好像是对的,有效果. 但是提交太多了,我能给他的commit全部取消吗?
这是合并过来的,取消后会不会崩掉?
试一下: 使用: git reset --soft HEAD^ 意思是 : 撤回到上一个版本
HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2
–mixed 意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的
–soft
不删除工作空间改动代码,撤销commit,不撤销git add
–hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
顺便说一下,如果commit注释写错了,只是想改一下注释,只需要:
git commit --amend
此时会进入默认vim编辑器,修改注释完毕后保存就好了。
退出来的方法是 :wq接回车.不会,就百度vim编辑器退出方法.
我先退一个版本的看看效果: 效果可以,最新一次提交的代码进入了add区.
继续reset 我有N多个commit,这次大胆点,3次.效果一如既往的好.继续 ,试一下不指定几次试试
我擦,好像没用作用,又好像翻车了,我又试了一下,好像确实没有作用,但是也不会错.
我又多执行了几次,好像把以前的也退回了,我擦,这是翻车了嘛.好像没有,只是把我的以前的提交又退回到了add,但是我有些已经推到远端了,这样影响吗? 应该不影响.
我推一下试试.本地版本落后之后,又从远端把提交过的代码拉下来了,真鸡儿神奇.
然后我又提交推了一把.远端显示了提交的信息. 还显示了以前的修改内容,可以的.稳.
我又合过去了,除了多提交了一些以前提交过的代码以外,并无影响.
要是不好奇,执行了N次那个回滚,也不会造成这种情况.下次就稳了.
而且那个git reset --soft HEAD^ 后面可以跟commit_id,这样不就一步到位了吗.
我觉得应该是可以的, 有空再试试.

git merge --abort 取消本次合并

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页