用慣了svn的我們到底該如何理解git

2021-08-18 04:38:16 字數 1073 閱讀 7529

通常,svn的**庫位於另一台機器,每次提交**,就會在遠端的**庫中產生一次提交歷史(包含我們為每次提交寫下的描述等附屬資訊)。整個過程完全依賴網路。在沒有網路的環境中,開發人員甚至無法檢視任何檔案的提交歷史。

相比之下,git最大的優勢便是:將**庫以「.git」目錄的形式存放在本地專案中。從而保證每次提交(commit)可以不依賴網路環境。

問:git如何解決多人協作開發呢?

答:git支援對版本庫進行操作!

啥?我沒說明白?請聽我解釋。git、svn、cvs,vss等版本庫,它們共同點之一是:所有的提交操作都是將**提交至版本庫;更新操作都是從版本庫更新**到本地。所以,這兩個操作都是圍繞本地**和版本庫進行的。換言之,在這兩個動作中,主角是「本地**」和「版本庫」。

同樣類似的操作,git卻允許主角是「自己的版本庫」和「別人的版本庫(遠端庫)」。也就是說git支援版本庫之間互相更新和提交**。只不過git為這兩個主角的新戲起了兩個新名字:拉取(fetch),推送(push)。團隊成員之間通過同步各自版本庫的方式實現協作開發。

fetch是將遠端庫更新到本地庫,push是將本地庫提交到遠端庫。當然,前提是兩個版本庫必須來自同乙個專案位址(都是clone自同乙個git位址)。

正常的專案開發中,團隊會建立乙個公用版本庫作為主庫(通過gitlab、gitolite等第三方工具使其支援遠端fetch和push),工程師會將自己的版本庫(提交過的**)push到主庫;將主庫的**fetch到自己的版本庫。

你可能會猜到,fetch是不會影響到本地**的。也就是說,即使用了fetch命令也只會影響到本地版本庫,並不會對本地**產生影響。如果需要將自己最新版的版本庫更新到工作目錄中,需要再用到合併命令(merge),這一步你可以理解為svn中的update操作。

問:能否把遠端庫的**一步直接更新到本地開發目錄中?

答:使用pull命令(pull命令封裝了fetch和merge)

總結:正是因為支援了團隊成員之間同步各自版本庫,git才實現了多成員的協作開發。也正因如此,git被稱之為分布式的版本控制工具。

我們該如何更好的工作

我們在開發一套系統其實大家也都知道一些比如需求分析 規劃構建 詳細的設計 系統的測試這些在軟體開發中必不可少需要考慮的幾個方面。可往往大家都不會去從這幾方面去做,因為時間有限,我是深深的有這樣的體會。如果這幾個方面如果都考慮進去,那就不是一天兩天就能完成一套系統的。因為我在需求分析上就沒有花太多的時...

我們的員工該如何激勵

我們的員工該如何激勵 2014年2月23日星期日下午,我們如約來到光環學友會參加 我們的員工該如何激勵 案例討論會。這次的討論會主持人是光環上海1307pmp培訓班5組的李冬。下午1點半起,參加討論會的學員們陸續到達,2點左右到達現場的學員已經有十幾個了,主持人李冬即召集大家先自我介紹。通過自我介紹...

我們該如何高效的學習

1.正確的認識學習 在我們每個人的學習過程中,都貫穿著以下幾點 1.學習態度 靠發心 學習態度對學習效果的影響作用,已被許多實驗研究所證明,積極的學習態度對學習速度有促進作用。1952年卡利 carry 在總 結一項實驗研究時指出,男女大學生對解決問題不同的態度,直接影響解決問題的效果。所以在學習時...