两个人开发一个项目,用的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。但是这样做太麻烦了,正确的做法应该是怎样呢?
PHPz2017-04-22 09:01:27
clone是一次性的,之後的開發中對於任何一個人:
如果git push失敗了:
推薦這本書:http://git-scm.com/book/zh
巴扎黑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
高洛峰2017-04-22 09:01:27
說一下你這樣的做法兩點不好的地方。
1.只有一個master版本。通常我們有兩個版本,一個master版本,一個是work版本。
master版本相當於正式版,基本上每次更新都是好幾十個文件一起更新的。 work版相當於測試版,一般一天更新個20來此很正常。
2.你說的a,b兩個人同時提交問題。正常情況下應該是a提交,之後b 合併(merge)a的提交之後,先在本地測試自己的工程是否還能正常工作,最後才是b提交。
第二點是git的靈魂,也是很多人不習慣的地方。 git這麼設計,最大的好處在於,保證了每一次提交的版本都是可運行的,這樣不論你刪除某個版本,在整個更新線上都不會有問題。因為以後的版本依然是可以跑的。
所以用git有一個預設的前提條件首先,也就是所有人提交的版本在自己的本機上都應該是跑的正確的。我這裡說的可以跑正確,不只說的是自己修改的程式碼,還包括合併了其他人的更新之後的。換句話說,每一次的提交,其實都是一個完整性測試。做開發的人都知道,初期的環境配置不管什麼專案都是少不了的,開發的時候如果專案都跑不起來,基本上就更別說修改程式碼了。所以要保持項目的完整性,是非常必要的。
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