假設你在的公司要上線一個新功能,大家開發團隊爲實現這個新功能,寫了大約5000行代碼,上線沒2天,就發現這個功能用戶並不喜歡,你老闆讓你去掉這個功能,你怎麼辦?你說簡單,直接把5000行代碼去掉就好了,可是個人親,說的簡單,你的這個功能寫了3周時間,但你還能記得你是新增長了哪5000行代碼麼?因此你急須要一個工具,能幫你記錄每次對代碼作了哪些修改,而且能夠輕易的把代碼回滾到歷史上的某個狀態。 這個神奇的工具就叫作版本控制。 linux
版本控制工具主要實現2個功能:git
在開發中,這是剛需,必須容許能夠很容易對產品的版本進行任意回滾,版本控制工具實現這個功能的原理簡單來說,就是你每修改一次代碼,它就幫你作一次快照github
一個複雜點的軟件,每每不是一個開發人員能夠搞定的,公司爲加快產品開發速度,會招聘一堆跟你同樣的開發人員開發這個產品,拿微信來舉例,如今假設3我的一塊兒開發微信,A開發聯繫人功能,B開發發文字、圖片、語音通信功能,C開發視頻通話功能, B和C的功能都是要基於通信錄的,你說簡單,直接把A開發的代碼copy過來,在它的基礎上開發就行了,能夠,可是你在他的代碼基礎上開發了2周後,這期間A沒閒着,對通信錄代碼做了更新,此時怎麼辦?你和他的代碼不一致了,此時咱們知道,你確定要再把A的新代碼拿過來替換掉你手上的舊通信錄功能代碼, 如今人少,3我的之間溝通很簡單,但想一想,若是團隊變成30我的呢?來回這樣copy代碼,很快就亂了, 因此此時亟需一個工具,能確保一直存儲最新的代碼庫,全部人的代碼應該和最新的代碼庫保持一致.windows
不少人都知道,Linus在1991年建立了開源的Linux,今後,Linux系統不斷髮展,已經成爲最大的服務器系統軟件了。bash
Linus雖然建立了Linux,但Linux的壯大是靠全世界熱心的志願者參與的,這麼多人在世界各地爲Linux編寫代碼,那Linux的代碼是如何管理的呢?服務器
事實是,在2002年之前,世界各地的志願者把源代碼文件經過diff的方式發給Linus,而後由Linus本人經過手工方式合併代碼!微信
你也許會想,爲何Linus不把Linux代碼放到版本控制系統裏呢?不是有CVS、SVN這些免費的版本控制系統嗎?由於Linus堅決地反對CVS和SVN,這些集中式的版本控制系統不但速度慢,並且必須聯網才能使用。有一些商用的版本控制系統,雖然比CVS、SVN好用,但那是付費的,和Linux的開源精神不符。分佈式
不過,到了2002年,Linux系統已經發展了十年了,代碼庫之大讓Linus很難繼續經過手工方式管理了,社區的弟兄們也對這種方式表達了強烈不滿,因而Linus選擇了一個商業的版本控制系統BitKeeper,BitKeeper的東家BitMover公司出於人道主義精神,受權Linux社區無償使用這個版本控制系統。工具
安定團結的大好局面在2005年就被打破了,緣由是Linux社區牛人彙集,難免沾染了一些梁山好漢的江湖習氣。開發Samba的Andrew試圖破解BitKeeper的協議(這麼幹的其實也不僅他一個),被BitMover公司發現了(監控工做作得不錯!),因而BitMover公司怒了,要收回Linux社區的無償使用權。網站
Linus能夠向BitMover公司道個歉,保證之後嚴格管教弟兄們,嗯,這是不可能的。實際狀況是這樣的:
Linus花了兩週時間本身用C寫了一個分佈式版本控制系統,這就是Git!一個月以內,Linux系統的源碼已經由Git管理了!牛是怎麼定義的呢?你們能夠體會一下。
Git迅速成爲最流行的分佈式版本控制系統,尤爲是2008年,GitHub網站上線了(github是一個基於git的代碼託管平臺,付費用戶能夠建私人倉庫,咱們通常的免費用戶只能使用公共倉庫,也就是代碼要公開。),它爲開源項目免費提供Git存儲,無數開源項目開始遷移至GitHub,包括jQuery,PHP,Ruby等等。
歷史就是這麼偶然,若是不是當年BitMover公司威脅Linux社區,可能如今咱們就沒有免費而超級好用的Git了。
要使用Git,第一步固然是安裝Git了。根據你當前使用的平臺來閱讀下面的文字:
首先,你能夠試着輸入git
,看看系統有沒有安裝Git:
1
2
3
|
$ git
The program
'git'
is currently not installed. You can
install
it by typing:
sudo
apt-get
install
git
|
像上面的命令,有不少Linux會友好地告訴你Git沒有安裝,還會告訴你如何安裝Git。
若是你碰巧用Debian或Ubuntu Linux,經過一條sudo apt-get install git
就能夠直接完成Git的安裝,很是簡單。
下載地址: https://gitforwindows.org/
能夠參考:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000