zoukankan      html  css  js  c++  java
  • 一些GIT操作的技巧

    一、git stash

    我们有时会遇到这样的情况,正在分支a上开发一半,然后分支b上发现Bug,需要马上处理。这时候分支a上的修改怎么办呢,git add 是不行的,有的git客户端版本会提示还有add过的文件没提交不能切换分支,有的git客户端版本会把修改带到b分支。

    git stash 就是解决这个问题,它把当前工作区的修改和git add的内容都保存到一个地方,然后git reset HEAD,使工作区回到上一次提交,处于干净状态。然后就可以很放心的切到另外的分支b干活了。

    # 1.保存当前工作环境保存
    git stash save "先给我保存一下,我要去别的分支修bug"
    
    # 2.切换到b分支处理bug,处理完后提交
    git checkout b
    ....
    
    # 3.切换到a分支,并还原初始工作环境
    git checkout a
    git stash list
    git stash pop
    # git stash pop相当于执行git stash apply和git stash drop
    # git stash apply stash@{num}
    

    二、git rebase

    有的时候我们在一个分支a开发的时候,master已经进入了很多修改,这时候如果把a的修改提交上去,可能就会跟主干有冲突,需要在主干解决冲突才能提交,这样比较难看。

    这时候git rebase就有用了,git rebase BRANCH_NAME可以把BRANCH_NAME分支的修改带到当前分支来,这样当前分支就有了BRANCH_NAME分支的所有内容,这样在当前分支开发的内容提交以后不会跟BRANCH_NAME有冲突,冲突在当前分支就可以解决。

    三、git reset

    可以取消已经提交的commit,一般我们只用git reset HEAD^。因为每个分支可能在开发过程中为了保存过程以便回溯会有很多commit,但是我们要求进入主干时,每个功能和bugfix只能有一个提交,因此可以先用git reset退回到最早的commit,然后把自己的修改最后打包成一个commit,再去跟主干合并。

    利用这两个命令,我们可以很好的管理我们的项目开发。我们只有一个master分支作为主干,不允许在主干上直接开发。每个同学根据feature和bug的issue建立分支,然后在分支上开发,不管开发过程中有多少个commit,我们要求最终提交每个bugfix或feature只能有一个提交。因此每个同学完成开发后,都需要git reset 退到最早的commit,git stash save保存一下自己的修改,然后git checkout master ; git pull拖一下最新的主干,然后返回自己的分支,再做git rebase master,把主干分支推进到当前分支,最后git stash pop弹出修改,有冲突则在当前分支解决,再git push

    # 1.修改bug1234
    git checkout -b bug1234
    
    # 2.在bug1234分支上进行修改,并可能多次git commit
    
    # 3.开发完成后,要提交
    git reset a37b9ff
    git stash save "fix bug 1234"
    git checkout master
    git pull
    git checkout bug1234
    git rebase master
    git stash pop
    # 处理冲突...
    git add .
    git commit
    git push
    

    四、参考

    一些Git操作的技巧

  • 相关阅读:
    for循环,pydev提示未使用的变量,解决办法
    sc 与net命令的区别
    Selenium测试Ajax程序(转)
    Python yield 使用浅析(转)
    python操作Excel读写--使用xlrd
    Python操作Mysql实例代码教程在线版(查询手册)
    MySQL之alter语句用法总结
    使用WebDriver遇到的那些坑(转)
    python 列表转为字典的两个小方法
    python
  • 原文地址:https://www.cnblogs.com/okokabcd/p/8947946.html
Copyright © 2011-2022 走看看