zoukankan      html  css  js  c++  java
  • Git的分支管理(二)

    分支管理策略

    git 在合并(merge)的时候有两种方式,一种是Fast forward模式,这种方式是快速模式,删除分支后,会丢掉分支信息。

    另外一种是--no-ff方式(禁止Fast forward模式),Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

    Fast forward模式:

    $ git merge dev

    --no-ff方式:

    $ git merge --no-ff -m "merge with no-ff" dev

    因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。

    合并后,我们用git log看看分支历史:

    $ git log --graph --pretty=oneline --abbrev-commit
    *   7825a50 merge with no-ff
    |
    | * 6224937 add merge
    |/
    *   59bc1cb conflict fixed
    ...

    可以看到,不使用Fast forward模式,merge后就像这样:

    git-no-ff-mode

     

    Bug分支

    当你在dev分支上工作的时候,忽然要修复一个bug,怎么办?
    dev分支上还没有保存,Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
    $ git stash
    Saved working directory and index state WIP on dev: 6224937 add merge
    HEAD is now at 6224937 add merge

    现在,用git status查看工作区,就是干净的(除非有没有被Git管理的文件),因此可以放心地创建分支来修复bug。

    首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支:

    $ git checkout master
    Switched to branch 'master'
    Your branch is ahead of 'origin/master' by 6 commits.
    $ git checkout -b issue-101
    Switched to a new branch 'issue-101'

    修复bug,提交,删除bug分支。最后再回到dev分支继续干没有干完的活:

    $ git checkout dev
    Switched to branch 'dev'
    $ git status
    # On branch dev
    nothing to commit (working directory clean)

    工作区是干净的,刚才的工作现场存到哪去了?用git stash list命令看看:

    $ git stash list
    stash@{0}: WIP on dev: 6224937 add merge

    git把存储的内容放到一个地方去了,可用两种方法恢复:

    第一种是git stash apply恢复,这种恢复之后,那个地方的内容并没有被删除,如果想删的话,还要git stash drop来删除。

    另一种方式是用git stash pop,恢复的同时把stash内容也删了:

    $ git stash pop

    再用git stash list查看,就看不到任何stash内容了。





  • 相关阅读:
    特殊字符大全
    ASP執行文件下載
    在 Access 里使用查询建立 存储过程/视图, 并使用 ASP 执行
    通過windows的排定工作來執行存儲過程
    前台页面中用js取得eWebEditor的值
    IE7外觀優化
    电话订票
    在BIOS设置“扩展或板载”显卡的方法
    子窗口中操作父窗口对像(javascript)(转)
    mailto用法
  • 原文地址:https://www.cnblogs.com/BlueBlog/p/4520453.html
Copyright © 2011-2022 走看看