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操作的技巧

  • 相关阅读:
    随笔2
    随笔
    关于updateElement接口
    随笔1
    本地访问正常,服务器访问乱码 记录
    Redis (error) NOAUTH Authentication required.解决方法
    tomcat启动很慢 停留在 At least one JAR was scanned for TLDs yet contained no TLDs.
    微信公众号消息回复
    微信公众号 报token验证失败
    idea中web.xml报错 Servlet should have a mapping
  • 原文地址:https://www.cnblogs.com/okokabcd/p/8947946.html
Copyright © 2011-2022 走看看