GIT-常用命令
0. 撤销commit
提交commit 后,还没有push时,想要撤销刚刚的 commit 。
git reset --soft HEAD^
注意,仅仅是撤回commit操作,您写的代码仍然保留。
1. 合并分支
把远端分支dev1 合并到 当前分支。
$ git merge --no-ff origin/dev1 -m 'merge to 主分支'
merge的三种方式:
- fast-forward
Git 合并两个分支时,如果顺着一个分支走下去可以到达另一个分支的话,那么 Git 在合并两者时,只会简单地把指针右移,叫做“快进”(fast-forward)不过这种情况如果删除分支,则会丢失merge分支信息。
在merge时如果什么都不加,则使用默认的 --ff , 即 fast-forward 方式则使用默认的 --ff , 即 fast-forward 方式
如:git merge origin/dev1
- –squash
把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用–squash进行合并,此时文件已经同合并后一样了,但不移动HEAD,不提交。需要进行一次额外的commit来“总结”一下,然后完成最终的合并。
- --no-ff
关闭fast-forward模式,在提交的时候,会创建一个merge的commit信息,然后合并的和master分支
0merge的不同行为,向后看,其实最终都会将代码合并到master分支,而区别仅仅只是分支上的简洁清晰的问题,然后,向前看,也就是我们使用reset
的时候,就会发现,不同的行为就带来了不同的影响
如:git merge --no-ff origin/dev1 -m 'merge to 主分支'
2. 删除分支
删除本地分支:
git branch -d dev20181018
删除本地分支-强制
git branch -D dev20181018
删除远端分支:
git push origin --delete dev20181018
3. 修改commit 注释
git commit --amend
此时会进入默认vim编辑器,修改注释完毕后保存就好了。
4. 撤销本地提交节点
撤销本地的commit,在本地commit后,还没有push。
想要撤回,可执行以下命令
git reset --soft HEAD^
这样就成功的撤销了你的commit,注意,仅仅是撤回commit操作,您写的代码仍然保留。
参数解释如下:
- --mixed
- --soft
- --hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
5. 撤销远端提交节点
如图,我想撤销 dev1分支下的 dev1.3 节点的提交 ,查看到其commit的版本号为 fcb025fc
//撤销语句
$ git revert fcb025fc
//提交上去即可
$ git push origin dev1
修改后分支图如下:
6. 撤销远端merge节点
我有两个分支 dev1、developMas。
分支dev1 修改后提交 merge 到 developMas,注释:dev1.1
分支dev1 再次修改后提交 merge 到 developMas,注释:dev1.2
现在想把developMas 分支上的 dev1.1 合并撤销掉。查看到其版本号为:ad6aa32c
执行revert语句报错如下
$ git revert ad6aa32c
error: commit ad6aa32c9b691067b701864f8cc7bf713a7725a1 is a merge but no -m option was given.
fatal: revert failed
但是,这是一个merge的提交。那么在撤销时,git并不知道我要撤销具体哪次!
可通过show语句查看这次commit的详细信息。
$ git show ad6aa32c
commit ad6aa32c9b691067b701864f8cc7bf713a7725a1
Merge: 57260e7 8059573
Author: lihongyuan <lihongyuan@MF11-XXZXLHY01>
Date: Wed Jan 8 08:26:00 2020 +0800
merge
在GitLab管理页面中也可以看到
可参考如下语句:
git revert ad6aa32c -m 1
git push
注解:参数 -m 就是选择一个主线从左往右(按图中的parents版本号顺序),从1开始数。在这个例子中,我要撤销到 57260e7e 下。因此-m 后跟参数1。
7. 回退到指定节点
当前master分支图如下,想要回退master 到 指定节点(init prod)下
先用 git pull 保存本地与远端一致。
git pull
查看指定版本号
执行回退命令:
git reset --hard f21b8069
强制提交本地分支覆盖远程分支
git push origin 分支名 --force
8. 取消merge
git merge后想取消merge状态
如上图,分支处于|MERGING状态,只需下面命令即可
git reset --hard
引用:https://www.jianshu.com/p/418323ed2b03