在使用Git進行協作開發時,主要的困難有哪些(如果有的話)?
在使用Git進行協作開發時,主要的困難有哪些(如果有的話)?如果沒有困難,那麼你認為使用Git進行協作開發的關鍵是什麼。
剛好在一個20人的團隊團隊推廣Git。
遇到的壓力第一是不理解,被質疑SVN用的好好的搞什麼幺蛾子?
第二是推廣標準工作流,被質疑搞什麼多分枝?神器source tree其實已經解決了90%的上手問題,內置完善的工作流支持。但是習慣問題解決不了呀。Git靈活的太過頭了,所以你在協作的時候,一定要保證團隊裡面有一個精通git的,隨時準備給大家救火。其餘的也沒什麼。
Git 使用的難點還是工作流。
工作流應該是團隊約定形成的,好的流程不如好的執行。你可以約定團隊所有人均操作master分支。
你也可以約定團隊每個人push到自己的分支,然後由負責人統一合併。你也可以約定團隊每個人去fork該分支。你也可以約定都該有哪些分支。你還可以約定每次commit應該怎麼寫。選一種適合當前團隊情況的工作流就好了,別給自己徒增煩惱。瀉藥。
現在用 Git 進行協作開發是最簡單的了吧。
Git 靈活沒錯,它有好多內部命令,但是其實會幾個常用命令就完全能滿足一般需求了。你完全可以邊學邊用,越用越爽。Git 是分散式的,意味著你根本不用搭建什麼伺服器,隨便選個數據傳輸協議(Git - The Protocols)就可以協作。當然人多的話還是推薦有個中央倉庫,直接把倉庫丟到伺服器上就可以了。或者可以使用 Git 倉庫託管平台,來獲得更好的體驗。結合現有的 Git Hosting 服務(GitHosting - Git SCM Wiki)或者自己搭建一個私有的都是非常輕鬆的(GitLab 也有很多公司在用)。現在以託管 Git 倉庫為主的代碼託管平台做得都非常好,還都兼具不錯的項目管理功能。簡直是協作的最佳解決方案啊有木有。沒什麽困難的,就把它當成一個更簡單更強大的svn先用起來再說,我有一個唯一穩定的public master branch,每個人提交到這個唯一的branch的commit是穩定的。就這樣子了。其他不管了。
如眾人所說,現成的方案一大把(比如gitlab),架伺服器或者用現成服務都是5分鐘的事情。
至於工作流是極其簡單的,照著官方教程做,裝好git後,在shell里「man gitworkflows」,git自帶的工作流不會錯的。網上很多非官方的工作流(比如git flow),說白了就是自己挖炕自己填,一律忽視之。
不要把git神秘化,它當然有很多獨特功能,但它也把很多版本控制軟體共通的功能改善得更方便了。
很多人的問題是他們連那些基本共通的功能都沒有掌握,卻去追求所謂先進功能,最後把自己繞暈了。
我建議先掌握以下關於版本控制的基本知識:- 會命令行工具diff和patch的基本用法- wikipedia上了解3way merge的概念Git太靈活,導致可用的工作流太多,困難在於選擇一個合適自己團隊和項目的工作流來進行協作開發。推薦一個以遊戲形式學習Git的項目: Learn Git Branching
同意樓上的大部分觀點。git極其靈活,選擇太多,反而讓人無所適從。"可以"不代表"應該",在git里實現一個目的可以有很多方法(尤其與分支相關時)。其中許多方法可能是糟糕的,而新手要分辨哪種最優並不容易,目前關於git最佳實踐方面的材料似乎也不多此外,找到適合自己(團隊)的工作流並不容易
在此推薦一下gitflow ,主要是針對開發過程的分支管理。目前熱度很高。感覺很棒
這裡是簡要的 git-flow 備忘清單難點不在使用,在管理。分散式開發時很容易把工作流搞的亂七八糟。
也許難點在於你們的技術不同步。
技術之間帶來的開發進度差距。
最後會變成鴻溝,就斷裂了。菜鳥覺得解決第一次衝突時的困難比以後碰到的困難都大。
如果當初能早點看到這個,我就不會在組裡推GIT了。結果我就是在自己還不精的情況下,成了輪子哥說的那個消防員。感覺挖了坑給自己。
傳統團隊使用git主要的障礙我覺得還是在於總是從基於push的思路來考慮問題,然而git是為基於pull的工作方式來設計的。所有人都能push到master的做法雖然能實現,但是不符合git的設計哲學,所以總會頻繁的帶來各種問題,讓人覺得需要頻繁的rebase來解決問題。
最好還是讓各個成員們習慣使用pull request,讓專人負責各個branch的pull和merge。主要是不要讓人亂merge就行,但是這也很好解決。
Git對團隊成員之間的要求高,瞎搞胡來,不按約定流程來的,都會把Log搞的一塌糊塗
基於 Git 的協作遇到的難題和坑很多,建議用 Coding 代碼託管,項目管理,WebIDE,演示部署,開啟雲端開發模式,讓開發更簡單
推薦閱讀:
※Git 裡面的 origin 到底代表啥意思?
※如何評價臉書Research Scientist痴迷於.DS_Store這一macOS常見文件?
※如何理解 Git 的分散式?
※md文件怎麼用?
※git能不能做到在代碼庫里添加文件,當你沒有的時候才獲取它,有的時候就忽略它?
TAG:Git |