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