1. 程式人生 > >git最詳細入門操作

git最詳細入門操作

轉載原文連結:https://gitbook.cn/m/mazi/article/5bb88acc3b8181150e6abb93?utm_source=weixinNotification 

隨著秋招進行中,諸多大學生以及轉行做 IT 的技術者開始應聘工作,然而當他們面試被問到 Git 時,卻對其一無所知。那麼 IT 工作者團隊開發是怎樣的呢?目前的軟體開發專案通常是由一個研發小組(團隊)共同分析、設計、編碼、維護以及測試的。Git 則是一款分散式原始碼管理工具,目前國內企業幾乎都已經完成了從 SVN 到 Git 的轉換。

本場 Chat 主要圍繞以下內容展開講解:

enter image description here

聊聊學習 Git 那些事

現在回想起來,其實我接觸 Git 的時候是在我大一的時候,我的表哥帶我入門的。當時因為需要做一個專案,所以他教我如何使用 Git 將寫好的程式碼推送到 GitHub 上,然後再從遠端倉庫拉到本地。起初因為沒有接觸過 Git,覺得這玩意很難學,又是一大堆命令需要記憶,在他教我的時候內心是抵觸的,當時覺得為什麼不把寫好的程式碼傳送給我呢?你是否也有過這樣的疑問呢?

學習 Git 的時候,因為沒有和他認真學,在他教過我一遍之後還是一臉懵逼,寫命令的時候也是不時地回頭檢視。因為不懂得 Git 版本控制的原理,總是將程式碼推送不到遠端伺服器,同時還出現一大堆錯誤,只好不停地去詢問他原因。

enter image description here

這是我當時學習 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 的轉換。

enter image description here

Git 是什麼?

Git:一款分散式原始碼管理工具,是 Linux 之父李納斯的第二個偉大作品。

SVN:集中式管理

  • 在集中式下,開發者只能將程式碼提交到伺服器;
  • 在集中式下,只有遠端伺服器上有程式碼資料庫。

Git:分散式管理

  • 在分散式下,開發者可以本地提交,也可以提交到遠端伺服器;
  • 在分散式下,每個開發者機器上都有一個程式碼倉庫。

在世界上所有的分散式版本控制工具中,Git 是最快、最簡單、最流行的。

Git 工作原理

學好 Git 的前提是理解 Git 工作原理。

瞭解 Git 工作原理前,我們需要了解兩個重要的知識,即工作區和版本庫。

  • 工作區:倉庫資料夾裡面,除了 .git 目錄以外的內容(詳見下圖)
  • 版本庫:Git 目錄,用於儲存記錄版本資訊(詳見下圖)
  • 版本庫中的暫緩區(stage)
  • 版本庫中的分支(master):Git 自動建立的第一個分支
  • 版本庫中的 HEAD 指標:用於指向當前分支

enter image description here

如下圖所示:

在工作區中有檔案 a.txt、b.html,經過執行 git add . 命令之後會將工作區的檔案新增到暫緩區中,再經過執行 git commit -m "說明文字" 命令之後,會將暫緩區的檔案新增到版本庫的分支當中去。

enter image description here

Git 安裝

首先進入 Git 下載地址:選擇對應作業系統的版本,如下圖

enter image description here

選擇對應 Git 版本(32 位 or 64 位)適用於 Windows 安裝程式的 Git,如下圖

enter image description here

下載完成之後,安裝即可(安裝過程中點選下一步 Next 即可)。

驗證 Git 是否安裝成功(驗證方法如下圖)

enter image description here

具體安裝過程這裡不做截圖:小白請見 Git 安裝百度經驗

Git 命令個人開發

在學習 Git 命令個人開發之前,我們需要了解一些常用的 Git 命令。

git help:Git 指令幫助手冊

開啟 git bash 終端,輸入 git help 指令會出現如下圖所示的Git命令詳細解釋,每個命令代表的意思(不懂英文也沒關係,複製到翻譯內就 ok)如 git init 代表初始化一個倉庫。

enter image description here

git init:(個人倉庫)倉庫初始化

首先我們在桌面新建一個 project 空資料夾之後,滑鼠右鍵以 git bash here開啟 Git 終端,輸入 git init 命令之後,觀察 project 資料夾之後多了一個隱藏資料夾 Git 目錄。這時我們就建立好了一個受 Git 管理的倉庫,這個倉庫就在本地。

enter image description here

隱藏的 .git 目錄分別代表什麼意思詳見下圖:

enter image description here

在使用 Git 之前,我們需要配置使用者基本資訊,即配置使用者名稱和郵箱。(防止跑路)

當前專案下配置使用者名稱與郵箱命令如下:

  • 配置使用者名稱:git config user.name "使用者名稱"(跟蹤 who 修改記錄)
  • 配置郵箱:git config user.email "郵箱"(多人開發間的溝通)

enter image description here

git config -l:檢視配置資訊命令

enter image description here

配置全域性使用者名稱與郵箱命令如下(適用於所有專案):

  • 配置全域性使用者名稱: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。如下圖所示:

enter image description here

然後我們進入 Git 終端,輸入 git status 命令檢視檔案狀態如下圖所示:

enter image description here

然後我們輸入 git add . 命令 將工作區的檔案儲存到暫緩區,並輸入git status 命令再次檢視檔案狀態如下圖所示:

enter image description here

我們再次輸入git commit -m""命令"添加了新檔案" 將暫緩區的檔案提交到當前分支,如下圖所示:

enter image description here

上述 Git 命令執行分析:

enter image description here

git log:檢視檔案的修改日誌

在工作區再新增 git.txt 檔案,並將該檔案新增到主分支(執行上述命令),然後輸入 git log 命令,如下圖所示,我們可以清楚的看到什麼時候誰(who)幹了什麼事。

enter image description here

git reflog :檢視分支引用記錄(能夠檢視所有的版本號)

輸入 git reflog 命令,我們可以清楚的看到版本號下對應做了什麼事(以簡短的方式檢視日誌)。

enter image description here

git diff:檢視檔案最新改動的地方

我們為工作區中的檔案 index.html 添加了一段程式碼如下所示,然後因為工作區檔案 index.html 被修改,所以我們再次將修改後的檔案提交到主分支中。

enter image description here

然後我們再次修改程式碼,如下圖所示:

enter image description here

然後我們輸入 git diff 命令,如下圖所示,綠色的程式碼被最近一次被修改的程式碼,還未受到 Git 版本控制。

enter image description here

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 賬號。選擇你的倉庫:

enter image description here

點選右側 New 新建一個倉庫,並給改倉庫起一個名字,可以描述該倉庫是什麼專案,如下圖所示:

enter image description here

enter image description here

然後我們在桌面建立一個 chatdemo 資料夾,以 git bash 終端開啟,輸入 git clone 倉庫的URL 下載遠端倉庫到本地,即 git clone https://github.com/xxxcode/git.git

enter image description here

然後我們進入 chatdemo 下的工作區,新建 readme.txt 與 index.html 檔案:

enter image description here

使用 Git 命令將工作區的檔案提交到暫緩區,並再次提交到主分支:

enter image description here

git push:將本地的倉庫資訊推送到遠端倉庫:

enter image description here

git push 提交之後,遠端倉庫新增了 2 個檔案,如下圖所示:

enter image description here