git最詳細入門操作
轉載原文連結:https://gitbook.cn/m/mazi/article/5bb88acc3b8181150e6abb93?utm_source=weixinNotification
隨著秋招進行中,諸多大學生以及轉行做 IT 的技術者開始應聘工作,然而當他們面試被問到 Git 時,卻對其一無所知。那麼 IT 工作者團隊開發是怎樣的呢?目前的軟體開發專案通常是由一個研發小組(團隊)共同分析、設計、編碼、維護以及測試的。Git 則是一款分散式原始碼管理工具,目前國內企業幾乎都已經完成了從 SVN 到 Git 的轉換。
本場 Chat 主要圍繞以下內容展開講解:
聊聊學習 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 是什麼?
Git:一款分散式原始碼管理工具,是 Linux 之父李納斯的第二個偉大作品。
SVN:集中式管理
- 在集中式下,開發者只能將程式碼提交到伺服器;
- 在集中式下,只有遠端伺服器上有程式碼資料庫。
Git:分散式管理
- 在分散式下,開發者可以本地提交,也可以提交到遠端伺服器;
- 在分散式下,每個開發者機器上都有一個程式碼倉庫。
在世界上所有的分散式版本控制工具中,Git 是最快、最簡單、最流行的。
Git 工作原理
學好 Git 的前提是理解 Git 工作原理。
瞭解 Git 工作原理前,我們需要了解兩個重要的知識,即工作區和版本庫。
- 工作區:倉庫資料夾裡面,除了 .git 目錄以外的內容(詳見下圖)
- 版本庫:Git 目錄,用於儲存記錄版本資訊(詳見下圖)
- 版本庫中的暫緩區(stage)
- 版本庫中的分支(master):Git 自動建立的第一個分支
- 版本庫中的 HEAD 指標:用於指向當前分支
如下圖所示:
在工作區中有檔案 a.txt、b.html,經過執行 git add .
命令之後會將工作區的檔案新增到暫緩區中,再經過執行 git commit -m "說明文字"
命令之後,會將暫緩區的檔案新增到版本庫的分支當中去。
Git 安裝
首先進入 Git 下載地址:選擇對應作業系統的版本,如下圖
選擇對應 Git 版本(32 位 or 64 位)適用於 Windows 安裝程式的 Git,如下圖
下載完成之後,安裝即可(安裝過程中點選下一步 Next 即可)。
驗證 Git 是否安裝成功(驗證方法如下圖)
具體安裝過程這裡不做截圖:小白請見 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 status
git 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 命令執行分析:
git log
:檢視檔案的修改日誌
在工作區再新增 git.txt 檔案,並將該檔案新增到主分支(執行上述命令),然後輸入 git log
命令,如下圖所示,我們可以清楚的看到什麼時候誰(who)幹了什麼事。
git reflog
:檢視分支引用記錄(能夠檢視所有的版本號)
輸入 git reflog
命令,我們可以清楚的看到版本號下對應做了什麼事(以簡短的方式檢視日誌)。
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 賬號。選擇你的倉庫:
點選右側 New 新建一個倉庫,並給改倉庫起一個名字,可以描述該倉庫是什麼專案,如下圖所示:
然後我們在桌面建立一個 chatdemo 資料夾,以 git bash 終端開啟,輸入 git clone 倉庫的URL
下載遠端倉庫到本地,即 git clone https://github.com/xxxcode/git.git
:
然後我們進入 chatdemo 下的工作區,新建 readme.txt 與 index.html 檔案:
使用 Git 命令將工作區的檔案提交到暫緩區,並再次提交到主分支:
git push
:將本地的倉庫資訊推送到遠端倉庫:
git push
提交之後,遠端倉庫新增了 2 個檔案,如下圖所示: