Git簡而言之就是個版本控制工具,用于跟蹤和管理代碼的工具。
就是我們自己本地對文檔進行儲存檔案的每一個修改版本的記錄。
有一個遠端伺服器對文檔進行維護版本,曆史版本存放在遠端伺服器中,所有人對該版本進行同步更新或送出修改,多對一的關系。
缺點時如果遠端伺服器當機了那麼就會有單點故障問題,導緻不可用,且無法檢視曆史版本。
每個使用者或者說使用者的電腦上都擁有一個版本控制倉庫,是以所有人都可以在本地檢視版本的曆史記錄,可以離線在本地送出,當需要送出到遠端伺服器上時隻需執行push即可。當然push前要先拉去到遠端伺服器上最新的文檔,本質上說和集中式版本控制差不多,最終都是以遠端伺服器上的文檔為主,不同的是版本的疊代曆史記錄從遠端伺服器上隻有一份變成了所有的人都維護儲存一份所有的版本記錄,理論上隻要有一個使用者的裝置沒有問題就能恢複所有的資料,但相對的增加了每個使用者本地的存儲空間的占用。
優點是不會因為遠端伺服器的當機等故障而導緻版本丢失無法工作的問題,但隻是盡可能地減少了問題導緻的故障,提高了容錯性,因為最終還是要以遠端伺服器上的版本為主,隻是因為每個使用者都維護了一份版本記錄使得容錯性大大提高,可以快速地使用本地版本資料恢複正常。
GIT是分布式版本控制,SVN是集中式版本控制。
GIT把内容按中繼資料方式存儲(簡單說就是Git在本地就是一個 克隆版的版本庫 ),而SVN是按檔案。
GIT分支和SVN的分支不同, SVN的分支就是版本庫中的另外的一個目錄,而Git的分支因為我們本地有個版本庫而切換和使用非常簡潔友善。
GIT沒有一個全局的版本号,而SVN有。SVN的版本号實際是任何一個相應時間的源代碼快照,而Git是所有人都有一份版本庫,不需要像SVN這樣處理。
GIT的内容完整性要優于SVN。 GIT的内容存儲使用的是SHA-1雜湊演算法。這能確定代碼内容的完整性,確定在遇到磁盤故障和網絡問題時降低對版本庫的破壞。
Git和SVN的差別
GIT與SVN之間的五大基本差別
檔案1:
檔案2:
位址<code>C:\Users\castamere\.ssh</code>
Git執行merge合并操作時,如果有沖突,會描述出沖突,并在沖突的位置加入沖突部分,需要我們人工介入處理。
删除下圖中顯示沖突的标示行,再把沖突的代碼調整到我們想要的結果即可。
最後再送出push請求到遠端伺服器上就好了。
Git通過加密比較加密結果
SVN是增量版本資料管理機制,隻保留變化的部分。
Git是快照流。
ce與ee的差別是ce是社群版(Community Edition),ee是企業版(Enterprise Edition)。
把上面的安裝過程中的指令放在一個安裝腳本中<code>install.sh</code>。
然後再更改腳本執行權限為可執行檔案
注意:執行前先儲存快照用于安裝出現問題時復原。
gitlab包含了很多中間件比如redis、Nginx等。
Git是Linus開發出來的,目前最優秀的版本控制工具。
所有下載下傳慢的【需要連接配接外網或者通路資源伺服器在國外的網站】軟體或工具都可以通過鏡像去下載下傳,比如淘寶、阿裡等的鏡像。
淘寶Git鏡像
清華大學鏡像站
linux系統中,一切皆檔案。
所有的配置檔案,在本地都會儲存一份。
配置環境變量隻是為了能全局使用,并不影響軟體的使用。如果想在任何位置都可以使用就需要配置環境變量。
暫存區本質上隻是個檔案Index.可以檢視.git檔案夾看到。
idea的terminal視窗中執行git指令。
git大全
git曆史記錄的操作前進後退其實是操作HEAD指針的移動。
Git中被删除的檔案隻要有送出記錄就永遠都可以從曆史版本中拿到,隻需要恢複到曆史版本總拿到該檔案,再回到最新的檔案中添加即可。或者隻是檢視曆史版本,然後複制出來即可。
docker無法在centOS7以下搭建,不要選擇安裝centOS7以下的版本。
重要:建立一個新項目,如何把新項目添加到gitlab或者github中?
步驟:
首先要現在github上建立一個項目名對于的遠端倉庫,比如說git-test。
然後把該項目拉去到本地來。執行pull指令
接着在idea中建立一個新項目,項目的路徑就選擇剛剛從github上拉去下來的git-test檔案夾所在的路徑。不用擔心無法建立成功或者有沖突。
再把建立的項目初始化好,配置好.gitignore檔案,把<code>/target/ .idea</code>等這些檔案排除掉。
最後再送出代碼并推送到遠端伺服器上,這樣其他人就可以拉取到新項目的代碼協同工作了。
參考
尚矽谷Git :較全面
狂神Git :太過簡單隻能做到滿足初學者日常送出使用僅此而已。