zoukankan      html  css  js  c++  java
  • GIT-常用命令

    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 
        意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
        这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
    • --soft  
        不删除工作空间改动代码,撤销commit,不撤销git add . 
    •  --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 

    如果ad6aa32c 这只是一个普通的提交,其实是不会报错的!
    但是,这是一个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 merge 时,是合并两个分支得到一个新的 merge commit。而Merge 这一行代表的是这个合并 parents,它可以用来表明 merge 操作的线索。
    可参考如下语句:
    git revert ad6aa32c -m 1
    git push

     注解:参数 -m 就是选择一个主线从左往右(按图中的parents版本号顺序),从1开始数。在这个例子中,我要撤销到 57260e7e 下。因此-m 后跟参数1。

    (传1表示撤销到57260e7e 所代表的commit,传2表示撤销到80595737所代表的commit)
     
    结果图如下:

    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

     引用:https://www.cnblogs.com/bellkosmos/p/11409904.html

     引用:https://www.cnblogs.com/lfxiao/p/9378763.html

    
    
  • 相关阅读:
    中海洋朗讯杯比赛总结[2014年12月]
    青理工ACM比赛总结和反思[2014年11月]
    程序员技术练级攻略
    一天能学会的计算机技术
    UVa 1597
    回滚机制
    超时和重试机制
    降级特技
    限流详解
    隔离术
  • 原文地址:https://www.cnblogs.com/1285026182YUAN/p/12161026.html
Copyright © 2011-2022 走看看