團隊協作利器 (一)· 初識Git

Git

GitHub/Gitee/GitLab 是基於 GIt 的,如果不會 Git,那麼這些代碼託管平臺也無從說起,所以,今天學習 Git 。

1. 什麼是 Git ?

Git 是一種版本控制系統。

什麼是版本控制系統?
我們在軟件開發過程中,源碼非常重要的,那麼對源碼的管理則是重中之重。

比如,我們爲了防止代碼的丟失,需要本地機器與遠程服務器都存放一份,而且還需要有一套機制讓本地與遠程服務器同步;

又比如,開發過程中,我們經常是幾個人協同開發,可能會涉及到幾個不同的人對一份代碼的操作或更改,這個時候,需要大家互不影響,有需要各自可以同步別人的代碼;

又比如,我們開發過程中免不了有 bug,有時候需要緊急對代碼進行還原;

又比如,隨着我們版本迭代的功能越來越多,但是我們需要清楚知道歷史每一個版本的代碼更改記錄,甚至知道每個人歷史提交代碼的情況;

上面這些類似的問題,都是版本控制系統能解決的問題。所以說,版本控制系統是一種記錄一個或若干個文件內容變化,以便將來查閱特定版本修訂情況的系統,對於軟件開發領域來說,版本控制是最重要的一環,而 Git 是當下最流行最好用的版本控制系統。

2. Git 安裝

Mac 上其實是自帶 Git 的,其他系統可點擊下方超鏈接選擇。

如何判斷是否安裝成功?

  • Mac :在命令行輸入 git --version,如果出現
    git version x.xx.x 說明已經安裝成功了。

  • Windows:右擊桌面,出現 Git Bash Here / Git Gui Here,點擊 Git Bash Here ,在命令行界面出現下圖即可說明安裝成功。
    在這裏插入圖片描述

3. 如何使用 Git

Git 是有很多圖形化軟件可以操作的,但是建議從命令行開始學習和理解,只有一開始學習命令行,之後對 Git 的每一步操作才能理解其意義,等熟練之後,再用任何圖形化軟去操作輕鬆上手。

4. 使用 Git 之前需要做的最小配置

  • 配置開發者 user.name 和 user.email 信息
$ git config --global user.name 'your_name'
$ git config --global user.email '[email protected]'

爲什麼 Git 需要配置這些信息?

  • 方便查看代碼提交日誌,修改人。
  • 在 code review 的時候,必要時可通過外部系統發送郵件給代碼提交者。

5. Git 命令列表

Git 的所有操作命令開頭都要以 git 開頭。
最常用的一些 Git 命令
上面列舉了最常用的一些 Git 命令,緊接着會有一句英文解釋這個命令的意義。但是還是結合實際操作才能更好理解。

5. Git 具體命令

我們在本地創建一個文件夾 git-learning,並在該文件夾下創建 test.txt 文件。

1. git config

  • config 的三個作用域:
名稱 作用域
local 只對某個倉庫有效
global 對當前用戶所有倉庫有效
system 對系統所有登錄用戶有效
缺省等於 local
  • 顯示 config 的配置,加 --list
$git config --list local
$git config --list global
$git config --list system

在這裏插入圖片描述

  1. git init
    代表初始化 git 倉庫。輸入 git init 之後會提示:
    在這裏插入圖片描述
    可以看到初始化了,該目錄已經是一個 git 倉庫了。

  2. git status
    緊接着我們輸入 git status 命令,會有如下提示:
    在這裏插入圖片描述
    默認就是在 master 分支,關於分支的概念後面會提。這時候提示的是,test.txt 文件 Untracked files,意思說,test.txt 文件還沒有被追蹤,還沒有提交在 git 倉庫呢,提示中顯示,我們可以使用 git add 命令去操作你想要提交的文件。

    git status 顧名思義就是查看狀態,這個命令可以算是使用最頻繁的一個命令了。

  3. git add

    上面提示 test.txt 文件還沒有提交到 git 倉庫裏,這個時候我們就可以隨便編輯一下 test.txt 文件,然後輸入 git add test.txt ,然後再輸入 git status:
    在這裏插入圖片描述

    此刻提示,“Changes to be committed",意思就是說 test.txt 文件等待被提交,當然你可以使用 git rm --cached 這個命令移除這個緩存。

  4. git commit
    接着我們輸入 git commit -m “my first commit” ,這個命令。commit 是提交的意思,-m 是代表提交的備註信息,執行了以上命令,代表我們已經正式進行了一次提交。

    這個時候我們再輸入 git status ,就會提示 nothing to commit。
    在這裏插入圖片描述

  5. git log
    這個時候,我們輸入 git log 命令,就會看到如下:
    在這裏插入圖片描述
    git log 命令可以查看所有產生的 commit 記錄,所以可以看到一i紀念館產生的一條 commit 記錄,包括提交時候的附帶信息”my first commit"

    git add & git commit
    爲什麼在 commit 提交前需要進行 add 操作?
    git add 我們可以理解成一個緩存區域,臨時保存我們的改動。而 commit 纔是真正的提交。
    這樣的好處是防止誤提交,當然也有命令直接將這兩步合併成一步操作,建議新手一步步的來。

  6. git branch
    branch 即分支的意思,分支的概念很重要,尤其是團隊協作的時候。

    執行 git init 初始化 git 倉庫之後會默認生成一個主分支 master ,也就是我們所在的默認分支,也基本是實際開發生產環境下的分支。一般情況下, master 分支不會輕易直接在上面操作的,我們可以輸入 git branch 產看當前分支情況:

    在這裏插入圖片描述

    如果我們想在此基礎上新建一個 a 分支呢?很簡單,執行 git branch a 就好了。這時候分支 a 和分支 master 是一模一樣的內容,我們再輸入 git branch 查看當前的分支情況:
    在這裏插入圖片描述

    但是可以看到,master 分之前有個 * 號,即雖然新建了一個 a 分支,但是當前所在分支還是在 master 上,如果我們想在 a 分支上進行開發,首先要切換到 a 分支上纔行,所以下一步是切換分支:

	git checkout a

執行這個命令,然後輸入 git branch,查看分支情況:
在這裏插入圖片描述

可以看到當前我們已經在分支 a 上了,有沒有將新建分支和切換分支一步到位的命令?當然有了:

git checkout -b a

這個命令的意思就是新建一個 a 分支,並且自動切換到 a 分支。

  1. git merge
    git merge 就是合併分支用到的命令,針對這個情況,需要先做兩步:
    第一步:先切換到 master 分支
    第二步:執行 git merge a 命令

    意思就是把 a 分支的代碼合併過來了,不出意外的話,這個時候 a 分支的代碼已經合併過來了。爲什麼不出意外呢?因爲這個時候可能有衝突而合併失敗,這個後面講。

  2. git branch -d
    有新建分支,那肯定有刪除分支了,如果a分支無用需要刪除,則執行命令:git branch -d a 就可以把 a 分支刪除了。

  3. git branch -D
    有些時候可能會刪除失敗,比如 a 分支還有代碼沒有合併到 master,這個時候執行 git branch -d a 是刪除不了的,他會提示我們 a 分支還有未合併的代碼,但是如果你非要刪除,那就執行 git branch -D a 就可以強制刪除 a 分支。

  4. git tag
    在客戶端開發的時候經常有版本的概念,比如 v1.0,v1.1 之類的,所以,在實際開發過程中,根據實際情況,需要我們給代碼加上標籤,這樣假設 v1.1 版本出現了一個新 bug,但是又不曉得 v1.0 是不是也有這個 bug,有了標籤就可以順利切換到 v1.0 版本的代碼,重新打包測試一下了。

    所以,如果想要新建一個標籤很簡單,比如 git tag v1.0 就代表我們在當前代碼狀態下新建了一個 v1.0 的標籤,輸入 git tag 可以查看歷史 tag 記錄。
    在這裏插入圖片描述
    想要切換到某個 tag 怎麼辦?執行 git checkout v1.0 ,即可切換到v1.0 tag 的代碼狀態了。

    以上,是一些 git 在本地環境的基本操作,還沒有涉及到遠程倉庫,後續會寫本地如何跟遠程倉庫一起同步協作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章