git是什麼?
git是目前世界上最先進的分布式版本控制系統(沒有之一)。
git有什麼特點?簡單來說就是:高階大氣上檔次!
那什麼是版本控制系統?
如果你用microsoft word寫過長篇大論,那你一定有這樣的經歷:
想刪除乙個段落,又怕將來想恢復找不回來怎麼辦?有辦法,先把當前檔案「另存為……」乙個新的word檔案,再接著改,改到一定程度,再「另存為……」乙個新檔案,這樣一直改下去,最後你的word文件變成了這樣:
過了一周,你想找回被刪除的文字,但是已經記不清刪除前儲存在哪個檔案裡了,只好乙個乙個檔案去找,真麻煩。
看著一堆亂七八糟的檔案,想保留最新的乙個,然後把其他的刪掉,又怕哪天會用上,還不敢刪,真鬱悶。
更要命的是,有些部分需要你的財務同事幫助填寫,於是你把檔案copy到u盤裡給她(也可能通過email傳送乙份給她),然後,你繼續修改word檔案。一天後,同事再把word檔案傳給你,此時,你必須想想,發給她之後到你收到她的檔案期間,你作了哪些改動,得把你的改動和她的部分合併,真困難。
於是你想,如果有乙個軟體,不但能自動幫我記錄每次檔案的改動,還可以讓同事協作編輯,這樣就不用自己管理一堆類似的檔案了,也不需要把檔案傳來傳去。如果想檢視某次改動,只需要在軟體裡瞄一眼就可以,豈不是很方便?
這個軟體用起來就應該像這個樣子,能記錄每次檔案的改動:
這樣,你就結束了手動管理多個「版本」的史前時代,進入到版本控制的20世紀。
分布式相比於集中式的最大區別在於開發者可以提交到本地,每個開發者通過轉殖(git clone),在本地機器上拷貝乙個完整的git倉庫。
下圖是經典的git開發過程。
從一般開發者的角度來看,git有以下功能:
1、從伺服器上轉殖完整的git倉庫(包括**和版本資訊)到單機上。
2、在自己的機器上根據不同的開發目的,建立分支,修改**。
3、在單機上自己建立的分支上提交**。
4、在單機上合併分支。
5、把伺服器上最新版的**fetch下來,然後跟自己的主分支合併。
6、生成補丁(patch),把補丁傳送給主開發者。
7、看主開發者的反饋,如果主開發者發現兩個一般開發者之間有衝突(他們之間可以合作解決的衝突),就會要求他們先解決衝突,然後再由其中乙個人提交。如果主開發者可以自己解決,或者沒有衝突,就通過。
8、一般開發者之間解決衝突的方法,開發者之間可以使用pull 命令解決衝突,解決完衝突之後再向主開發者提交補丁。
從主開發者的角度(假設主開發者不用開發**)看,git有以下功能:
1、檢視郵件或者通過其它方式檢視一般開發者的提交狀態。
2、打上補丁,解決衝突(可以自己解決,也可以要求開發者之間解決以後再重新提交,如果是開源專案,還要決定哪些補丁有用,哪些不用)。
3、向公共伺服器提交結果,然後通知所有開發人員。
優點:
適合分布式開發,強調個體。
公共伺服器壓力和資料量都不會太大。
速度快、靈活。
任意兩個開發者之間可以很容易的解決衝突。
離線工作。
缺點:
資料少(起碼中文資料很少)。
學習週期相對而言比較長。
不符合常規思維。
**保密性差,一旦開發者把整個庫轉殖下來就可以完全公開所有**和版本資訊。
Git一分鐘上手
流程 取 每次工作前更新 到最新版本 修改 提交 到伺服器 設定使用者名稱與郵箱 12 git config global user.name my name git config global user.email my email.com 從已有的git庫中提取 git clone git se...
git一分鐘教程
設定使用者名稱與郵箱 1 2git config global user.name my name git config global user.email my email.com 從已有的git庫中提取 1 更新本地 到最新版本 需要merge才能合到本地 中 1git fetch 合併更新後的...
Git一分鐘上手
git一分鐘上手 流程 取 每次工作前更新 到最新版本 修改 提交 到伺服器 取 及修改全域性設定 設定使用者名稱與郵箱 git config global user.name my name git config global user.email my email.com 從已有的git庫中提取...