美文网首页
Git管理策略

Git管理策略

作者: JillZsy | 来源:发表于2019-03-27 17:10 被阅读0次

    在多人开发的环境下,良好的管理机制是必须的。

    分支管理策略

    1. master
    • 主分支-用于发布版本
    • 发布版本时打一个tag
    • 远程同步
    2.dev
    • 开发分支-用于开发
    • 远程同步
    3.user's dev
    • 个人的开发分支-合并到dev
    • 不需要远程同步
    4.feature
    • 新功能分支-用于开发新功能
    • 如需多人开发,则远程同步,否则无需远程同步
    5.bug
    • 专门用于修改bug
    • 不需要远程同步

    注意事项

    工作现场

    JillZsy分支开发到一半,需要临时改个bug,那就把目前的工作区存储下来

    $ git stash
    

    切换到devbug分支修改bug,修改提交完成之后,再回到JillZsy分支
    查看保存的工作现场

    $ git stash list
    stash@{0}: WIP on dev: 7a3972a readme tee
    stash@{1}: WIP on dev: 7a3972a readme tee
    

    Git把stash内容存在某个地方,类似于栈。恢复工作现场有两种方法:

    • apply+drop -- apply恢复不删除stash内容, drop删除stash内容
    • pop-- 恢复同时删除stash内容
    //默认最后存储的stash@{1}
    $ git stash apply
    $ git stash drop
    //指定某个stash
    $ git stash apply stash@{0}
    $ git stash drop stash@{0}
    ---------------------------------------------------------
    
    $ git stash pop //此时pop:stash@{1}
    //指定某个stash
    $ git stash pop stash@{0}
    

    分支远程同步问题(以dev为例)

    1.user1推送分支到远程仓库

    $ git push origin dev
    
    1. user2获取分支
    • 必须创建远程origindev分支到本地
    • pull代码
    • pull报错的话,关联本地dev分支与origin/dev分支
    //创建远程`origin`的`dev`分支到本地
    $ git checkout -b dev origin/dev
    //pull
    $ git pull
    //关联`dev`与`origin/dev`
    $ git branch --set-upstream-to=origin/dev dev
    

    使用--no-ff强制禁用Fast forwardgit log --graph --pretty=oneline --abbrev-commit能看到分支信息
    //Fast forward
    $ git merge dev
    
    $ git log --graph --pretty=oneline --abbrev-commit
    * 3e32c20 (HEAD -> master, dev) dev readme modify   //无分支信息
    * c3b3ef8 new Project
    
    //禁用Fast forward
    $ git merge --no-ff -m "merge no-ff" dev
    
    $ git log --graph --pretty=oneline --abbrev-commit
    *   d439267 (HEAD -> master) merge no-ff
    |\  
    | * 5bea520 (dev) dev readme modify too        //有分支信息
    |/  
    * c3b3ef8 new Project
    

    rebase

    push之前把分叉的log整理成一条直线。更加直观。

    $ git log --graph --pretty=oneline --abbrev-commit
    *   fac28d0 (HEAD -> master) dev merge no-ff
    |\  
    | * 5b00cb5 (dev) dev readme modify
    |/  
    * c3b3ef8 new Project
    
    //对于未push到远程的log有效
    $ git rebase
    
    $ git log --graph --pretty=oneline --abbrev-commit
    * 759e900 (HEAD -> master) dev readme modify
    * c3b3ef8 new Project
    

    相关文章

      网友评论

          本文标题:Git管理策略

          本文链接:https://www.haomeiwen.com/subject/qdwzvqtx.html