首頁  >  問答  >  主體

Git协作开发提交合并问题

两个人开发一个项目,用的Git做版本控制,两个人同时都有代码要提交到已有的远端仓库里面,这个步骤应该是怎样的呢?

例如下面一个场景该如何处理?(只用了一个分支master)

开发人员1:git clone ...
开发人员2:git clone ...
开发人员1:编码...
开发人员2:编码...
开发人员1:git add -> git commit -> git push (ok)
开发人员2:git add -> git commit -> git push (失败!)

当一个人push成功后,另一个人再push就不可以了。 现在我们的处理办法是,开发人员2重新Clone一次,手动增加代码,再提交,push。但是这样做太麻烦了,正确的做法应该是怎样呢?

PHP中文网PHP中文网2738 天前676

全部回覆(5)我來回復

  • PHPz

    PHPz2017-04-22 09:01:27

    clone是一次性的,之後的開發中對於任何一個人:

    • 修改程式碼
    • git add, git commit
    • git push

    如果git push失敗了:

    • git pull
    • 自動合併修改,如果無法自動合併就手工合併,然後git coomit
    • git push

    推薦這本書:http://git-scm.com/book/zh

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-22 09:01:27

    上面的問題使用 git pull 或者 git fetch 就可以解決,如果想更好的使用git的話, 建議使用 Git Flow,Git Flow算是一套優秀Git分支模型方法論。完全遵守這套規則可以避免常見的問題,帶來開發上的流暢體驗。 這可以說是 最佳實踐

    github: https://github.com/nvie/gitflow

    相關文章: 開始實踐git-flow http://www.jeffkit.info/2010/12/842/
    Git flow 開發流程 http://ihower.tw/blog/archives/5140/
    http://nvie.com/posts/a-successful-git-branching-model/
    git分支管理策略 http://www.ruanyifeng.com/blog/2012/07/git.html
    git flow and github flow http://hooopo.writings.io/articles/fe2b0791

    回覆
    0
  • 高洛峰

    高洛峰2017-04-22 09:01:27

    說一下你這樣的做法兩點不好的地方。
    1.只有一個master版本。通常我們有兩個版本,一個master版本,一個是work版本。 master版本相當於正式版,基本上每次更新都是好幾十個文件一起更新的。 work版相當於測試版,一般一天更新個20來此很正常。
    2.你說的a,b兩個人同時提交問題。正常情況下應該是a提交,之後b 合併(merge)a的提交之後,先在本地測試自己的工程是否還能正常工作,最後才是b提交。
    第二點是git的靈魂,也是很多人不習慣的地方。 git這麼設計,最大的好處在於,保證了每一次提交的版本都是可運行的,這樣不論你刪除某個版本,在整個更新線上都不會有問題。因為以後的版本依然是可以跑的。
    所以用git有一個預設的前提條件首先,也就是所有人提交的版本在自己的本機上都應該是跑的正確的。我這裡說的可以跑正確,不只說的是自己修改的程式碼,還包括合併了其他人的更新之後的。換句話說,每一次的提交,其實都是一個完整性測試。做開發的人都知道,初期的環境配置不管什麼專案都是少不了的,開發的時候如果專案都跑不起來,基本上就更別說修改程式碼了。所以要保持項目的完整性,是非常必要的。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-22 09:01:27

    開發人員1:git add -> git commit -> git push (ok)

    開發人員2:git add -> git commit -> git pull origin master -> git commit -a -m 'merge'-> git push

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-22 09:01:27

    兩個人連git最基本的流程都不知道,而且遇到問題不知道看git給的錯誤提示,當初是怎麼選擇使用git的?隨大流了嗎?

    回覆
    0
  • 取消回覆