搞懂Git版本控制
聊聊學習Git哪些事
現在回想起來,其實我接觸Git的時候是在我大一的時候,我的表哥帶我入門的。當時因為需要做一個專案,所以他教我如何使用Git將寫好的程式碼推送到GitHub上,然後再從遠端倉庫拉到本地。起初因為沒有接觸過Git,覺得這玩意很難學,又是一大堆命令需要記憶,在他教我的時候內心是抵觸的,當時覺得為什麼不把寫好的程式碼傳送給我呢?你是否也有過這樣的疑問呢?
學習Git的時候,因為沒有和他認真學,在他教過我一遍之後還是一臉懵逼,寫命令的時候也是不時的回頭檢視。因為不懂得Git版本控制的原理,總是將程式碼推送不到遠端伺服器,同時還出現一大堆錯誤,只好不停的去詢問他原因。
這是我當時學習Git版本控制的小經歷,現在你可以想想你的情況。
-
你是否和我當初一樣,大學才開始接觸Git ?
-
是否還未聽過Git OR GitHub?
-
是否還未擁有自己的GitHub賬號?
-
是否還不懂Git工作原理?
-
是否看完Git網路教程還是不會將程式碼推送到GitHub?
如果你還是這種情況,沒關係,因為這不是你一個人的問題。我相信通過本次Chat,你一定可以懂得Git工作原理,也會擁有自己的GitHub賬號,並且能將自己寫好的程式碼推送到遠端倉庫,通過GitHub託管,再也不用擔心重灌系統導致程式碼丟失的問題。(這是建立在你動手的前提之下,當然本次Chat我會盡力講的通俗易懂)
在使用Git之前,我們先需要學習一些Git知識鋪墊,以備我們後面更好的學習Git版本控制。
Git知識鋪墊
-
程式設計師為什麼要使用Git版本控制?
-
常見的版本控制?
-
Git是什麼?
-
Git工作原理
-
Git安裝
程式設計師為什麼要使用Git版本控制?
現在的軟體專案通常是由一個研發小組共同分析、設計、編碼、維護以及測試的。在公司99%的都是團隊合作開發專案,如果是團隊開發專案,那麼就會遇到以下問題:
-
難以恢復至以前正確版本 (版本1.0-2.0)
-
容易引發bug
-
程式碼責任問題(跑路)
-
程式碼管理問題
-
程式碼衝突問題(寫同樣的程式碼)
-
無法進行許可權控制
-
專案版本釋出困難......
針對以上諸多問題,原始碼管理工具(版本控制工具)應用而生。
使用版本控制工具:
-
不會對現有工作造成任何損害
-
不會增加工作量
-
程式碼管理更方便
-
程式碼得以追隨
-
新增新的功能拓展時,會變得更加容易......
常見的版本控制
-
CVS版本控制
-
SVN版本控制
-
GIT 版本控制
CVS:CVS是一個C/S系統,是一個常用的程式碼版本控制軟體,1990年誕生,10多年前主流原始碼管理工具。SVN:SVN:又稱subversion,是一款集中式原始碼管理工具。由於之前CVS編碼的問題,大多數軟體開發公司都使用SVN替代了CVS),前幾年在國內軟體企業使用最為普遍。GIT:一款分散式原始碼管理工具,目前國內企業基本都使用Git。
CVS和SVN是一個集中式的版本控制器,他們需要一臺專門的版本控制伺服器。而GIT是分散式的,他不要一臺專門的伺服器來執行這個版本控制。每個開發人員的電腦組成的網路就可以執行GIT,特別適合原始碼的釋出和交流,因此大部分開源專案都用git。目前國內企業幾乎都已經完成了從 SVN 到 Git 的轉換。
Git是什麼?
集中式管理:SVN 分散式管理:Git在集中式下,開發者只能將程式碼提交到伺服器在分散式下,開發者可以本地提交,也可以提交到遠端伺服器在集中式下,只有遠端伺服器上有程式碼資料庫,在分散式下,每個開發者機器上都有一個程式碼倉庫
Git:一款分散式原始碼管理工具,是Linux之父李納斯的第二個偉大作品。
在世界上所有的分散式版本控制工具中,git是最快、最簡單、最流行的。
Git工作原理
學好Git的前提是理解Git工作原理
瞭解Git工作原理前,我們需要了解兩個重要的知識,即工作區和版本庫。
工作區:倉庫資料夾裡面, 除了.git目錄以外的內容.(詳見下圖)
版本庫:git目錄, 用於儲存記錄版本資訊.(詳見下圖)
版本庫中的暫緩區(staga):版本庫中的分支(master): git自動建立的第一個分支版本庫中的HEAD指標:用於指向當前分支
如下圖所示;在工作區中有檔案a.txt,b.html,經過執行git add . 命令之後會將工作區的檔案新增到暫緩區中,再經過執行git commit -m "說明文字" 命令之後,會將暫緩區的檔案新增到版本庫的分支當中去.
Git安裝
首先進入Git下載地址:選擇對應作業系統的版本,如下圖
選擇對應Git版本(32位or64位):適用於Windows安裝程式的Git,如下圖
下載完成之後,安裝即可(安裝過程中點選下一步(Next)即可)
驗證Git是否安裝成功:(驗證方法如下圖)
Git命令個人開發
在學習Git命令個人開發之前,我們需要了解一些常用的git命令.
git help :git指令幫助手冊
開啟git bash終端,輸入git help 指令會出現如下圖所示的git命令詳細解釋,每個命令代表的意思(不懂英文也沒關係,複製到翻譯內就ok) 如git init 代表初始化一個倉庫.
git init : (個人倉庫)倉庫初始化
手寫我們在桌面新建一個project空資料夾之後,滑鼠右鍵以git bash here 開啟git終端,輸入git init 命令之後,觀察project資料夾之後多了一個隱藏資料夾.git目錄.這時我們就建立好了一個受git管理的倉庫,這個倉庫就在本地.
隱藏的.git目錄分別代表什麼意思詳見下圖:
在使用git之前,我們需要配置使用者基本資訊,即配置使用者名稱和郵箱.(防止跑路)當前專案下配置使用者名稱與郵箱命令如下:配置使用者名稱:git config user.name "使用者名稱"(跟蹤who修改記錄)配置郵箱:git config user.email "郵箱"(多人開發間的溝通)
檢視配置資訊命令 git config -l
配置全域性使用者名稱與郵箱命令如下(適用於所有專案) 配置全域性使用者名稱:git config --global user.name "使用者名稱"(跟蹤who修改記錄) 配置全域性郵箱:git config --global user.email "郵箱"(多人開發間的溝通)
git status :檢視檔案的狀態
檢視某個檔案的狀態:git status 檔名檢視當前路徑所有檔案的狀態:git statusgit add :將工作區的檔案儲存到暫緩區
儲存某個檔案到暫緩區:git add 檔名儲存當前路徑的所有檔案到暫緩區:git add .(注意,最後是一個點 . )git commit:將暫緩區的檔案提交到當前分支
提交某個檔案到分支:git commit -m ”註釋” 檔名儲存當前路徑的所有檔案到分支:git commit -m ”註釋”
首先我們在工作區中,新增兩個新的檔案,readme.txt \ index.html 如下圖所示;
然後我們進入git終端,輸入git status 命令檢視檔案狀態如下圖所示;
然後我們輸入git add . 命令 將工作區的檔案儲存到暫緩區,並輸入git status 命令再次檢視檔案狀態如下圖所示;
我們再次輸入git commit -m""命令"添加了新檔案" 將暫緩區的檔案提交到當前分支,如下圖所示;
git log :檢視檔案的修改日誌
在工作區再新增git.txt檔案,並將該檔案新增到主分支(執行上述命令),然後輸入git log 命令,如下圖所示,我們可以清楚的看到什麼時候誰(who)幹了什麼事。
git reflog :檢視分支引用記錄(能夠檢視所有的版本號)
輸入git relog 命令,我們可以清楚的看到版本號下對應做了什麼事(以簡短的方式檢視日誌)
git diff :檢視檔案最新改動的地方我們為工作區中的檔案index.html添加了一段程式碼如下所示;然後因為工作區檔案index.html被修改,所以我們再次將修改後的檔案提交到主分支中.
然後我們再次修改程式碼,如下圖所示;
然後我們輸入git diff命令,如下圖所示;綠色的程式碼被最近一次被修改的程式碼,還未受到git版本控制.
git reset:版本回退(建議加上––hard引數,git支援無限次後悔)
回退到上一個版本:git reset ––hard HEAD^回退到上上一個版本:git reset ––hard HEAD^^回退到上N個版本:git reset ––hard HEAD~N(N是一個整數)回退到任意一個版本:git reset ––hard 版本號
注意:Git命令團隊開發與個人開發命令基本相同,這裡不做詳細介紹
GitHub簡單使用
git命令補充:git clone:下載遠端倉庫到本地下載遠端倉庫到當前路徑:git clone 倉庫的URL下載遠端倉庫到特定路徑:git clone 倉庫的URL 存放倉庫的路徑
git pull:下載遠端倉庫的最新資訊到本地倉庫
git push:將本地的倉庫資訊推送到遠端倉庫提交時如果遠端倉庫有其它人提交的最新程式碼, 必須先pull, 再提交
GitHub是一個面向開源及私有軟體專案的託管平臺,因為只支援git 作為唯一的版本庫格式進行託管,故名GitHub GitHub官網地址:
使用GitHub之前,我們需要去GitHub官網註冊一個屬於自己的賬號,然後登入你的GitHub賬號.選擇你的倉庫.
點選右側New新建一個倉庫,並給改倉庫起一個名字,可以描述該倉庫是什麼專案,如下圖所示;
然後我們在桌面建立一個chatdemo資料夾,以git bash終端開啟 , 輸入git clone 倉庫的URL 下載遠端倉庫到本地 即git clone https://github.com/xxxcode/git.git
然後我們進入chatdemo下的工作區,新建readme.txt與index.html檔案.
使用git命令將工作區的檔案提交到暫緩區,並再次提交到主分支.
git push**:將本地的倉庫資訊推送到遠端倉庫