搜尋

首頁  >  問答  >  主體

github - Git 問題, 一個 master, 多個新功能分支, 怎樣有序地合併和提交?

以前大多個是一個的使用 Git, 到 Github 上提交的場景, 對多人開發合並項目經驗不多,
現在遇到的是在 Github 上存在主分支, 本地需要修改多個功能和 bug 等等,
我是按以前實習回來的同學提示, 在多個分支開發不同的功能, 然後合並提交..
合並和提交的順序不是確定的, 因此不能簡單直接用 merge 每次一個個疊加.
有時我用 rebase, 但有發現 commit 順序不是時間順序, 到線上被 merge 以後也不是非常清晰
於是我想問一下麵對這樣的場景, 用怎樣的方式管理會更合適?

有在 Google, 但一些細節不清晰.. 比如 commit 顯示順序.. 還有再次被 merge 後的細節..

怪我咯怪我咯2801 天前660

全部回覆(3)我來回復

  • 大家讲道理

    大家讲道理2017-04-21 11:20:40

    git支援很多工作流程,我們採用的一般是這樣,遠端建立一個主分支,本地每人創建功能分支,日常工作流程如下:

    去自己的工作分支
    $ git checkout work

    工作
    ....

    提交工作分支的修改
    $ git commit -a

    回到主分支
    $ git checkout master

    取得遠端最新的修改,此時不會產生衝突
    $ git pull

    回到工作分支
    $ git checkout work

    用rebase合併主幹的修改,如果有衝突在此時解決
    $ git rebase master

    回到主分支
    $ git checkout master

    合併工作分支的修改,此時不會產生衝突。
    $ git merge work

    提交到遠端主幹
    $ git push

    這樣做的好處是,遠端主幹上的歷史永遠是線性的。每個人在本地分支解決衝突,不會在主幹上產生衝突。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-21 11:20:40

    上面那位仁兄的回答很好,我這裡再補充一個資料,給樓主作為參考。這是阮兄寫的,[git分支管理策略](http://www.ruanyifeng.com/blog/2012/0...)。

    回覆
    0
  • 阿神

    阿神2017-04-21 11:20:40

    可以在一條分支上一起開發,你有變更的時候,在提交前,使用

    git stash
    

    這樣將本地的修改全部緩存在一個堆疊中了,然後把別人的修改同步過來

    git pull --rebase
    

    下一步是將自己的變更恢復到最新的節點上

    git stash pop
    

    然後再使用git commit提交,這樣就會讓一個分支的版本按順序繼續發展,而不是像織毛衣一樣,你可以看一下我們使用這種方法前後的對比圖

    之前:

    之後

    回覆
    0
  • 取消回覆