常金的 Git 學習總結

前言

前段時間進入新公司,開始使用 Git 作爲版本控制工具。遂對 Git 基礎進行了一定的學習,這裏是我的一些學習總結。主要是命令太多,需要理解記憶比較好,這裏總結一下,希望對大家有一些幫助。

Git 理解

版本控制系統發展

版本控制系統的發展過程,大致沿着 VCS(Version Control System,版本控制系統) -> CVCS(Centralized Version Control Systems,集中式版本控制系統) -> DVCS(Distributed Version Control System,分佈式版本控制系統)前進。

常用版本控制系統中,SVN 是 CVCS 的一個代表,Git 是 DVSC 的一個代表。

DVCS 由於其安全,靈活等優點,逐漸成爲版本控制系統領域的最佳實踐,Git 更是成爲了版本控制系統的事實標準,所以學習 Git 很有必要。

Git 命令理解

Git 強大的命令系統給我們帶了很大的便利,很靈活,很好用。但是對初學者不是很友好。(幾十個命名,要搞死人啦)

這裏對這些 Git 命令做個分類,好記一些。大致分爲 4 類。

  1. Git 倉庫相關命令。
    1. git init
    2. git clone
    3. git remote
    4. git push
    5. git pull
    6. git fetch
  2. Git 工作流相關命令。
    1. git add
    2. git commit
    3. git restore
    4. git status
  3. Git 分支相關命令
    1. git branch
    2. git checkout
    3. git merge
    4. git rebase
  4. 其他命令
    1. git config 配置
    2. git help
    3. git diff
    4. git log
    5. git rm
    6. git mv
    7. git tag

Git 倉庫

Git 更像是一個小型的文件系統,提供了許多以此爲基礎構建的超強工具,而不只是一個簡單的 VCS。

  1. Git 倉庫
    學習 Git,第一個要理解的概念就是 Git 倉庫。Git 倉庫說着很神祕,其實就是一個被 Git 管理的文件夾。
    Git 倉庫存在一個隱藏的 .git 文件夾,.git 內部存放版本控制相關的文件。當我們切換分支或版本時,Git 會自動拉取對應的文件,展示到文件夾中;當我們提交一些文件時,Git 會把相關的提交做一定的處理,存到 .git 中。

  2. Git 遠程倉庫
    剛接觸 Git 的人,有時會迷失在 Git 倉庫、Git 遠程倉庫、GitHub 這些名詞中。
    其實,通俗的解釋,Git 遠程倉庫也就是一個普通的 Git 倉庫罷了,只是這個倉庫放在某個遠程服務器上。Git 作爲一個分佈式的版本控制系統,本地和遠程倉庫都是一樣的。至於 GitHub,是一個 Git 倉庫託管網站,大家的遠程倉庫放到他的服務器上。

  3. 本地文件夾、Git 倉庫、Git 遠程倉庫之間的關係
    在這裏插入圖片描述
    圖中大概介紹了三者的關係。

  4. 倉庫相關命令記憶

    • 建立本地倉庫:
      git init 本地文件夾 -> Git 倉庫;
      git clone 克隆遠程倉庫到本地。
    • 操作遠程倉庫 git remote:remote 命令通過不同的參數實現不用的功能。可以理解爲增刪改查
      • add:連接本地倉庫和遠程倉庫
      • rm:斷開關聯
      • rename:重命名遠程倉庫在本地的 name
      • 無參數/-v/show origin:查看遠程倉庫相關信息
    • 本地 Git 倉庫和遠程倉庫交互 git push、git pull、git fetch

Git 工作流

Git 使用中,一般操作方式大致爲 修改 -> 暫存 -> 提交。形成一個工作流。
在這裏插入圖片描述

  1. Git 倉庫中文件常見 4 種狀態

    1. untracked 新添加到 Git 倉庫中的文件會被標識爲未追蹤狀態。
    2. unmodefied 未修改狀態,git clone 下來的文件,初始爲未修改狀態;commit 命令提交過的文件也爲未修改狀態。
    3. modefied 已修改狀態,當文件被修改後,文件會被標識爲已修改狀態。
    4. staged 已暫存狀態,通過 git add 命令暫存後的文件會標識爲已暫存狀態。

    使用 git status 查看文件狀態

  2. git add
    add 命令一般來說有三種使用場景

    1. 跟蹤新文件
    2. 暫存已修改文件
    3. 合併時把衝突的文件標記爲已解決狀態

    總的來說,其實就是“把文件添加到暫存中,等待提交”

  3. git commit
    commit 命令用來提交一個版本,提交完成之後,就會有一個版本存在 Git 倉庫中。
    在這裏插入圖片描述
    這裏有一篇文章可以幫助理解 Git commit 的內部原理。這纔是真正的Git——Git內部原理揭祕!

  4. 撤銷相關
    Git 操作過程中,會存在一些撤銷操作的情況。
    常用的命令就是 git restore [file] 直接調用這條命令可以撤銷對文件的修改;
    如果需要撤銷已暫存的修改,需要添加 --staged 參數 git restore --staged [file]
    另外 git commit --amend 指令用來修改上次提交,如果自上次提交以來未做任何修改,則修改的只是提交信息;
    另外還有版本回退的情況,可以使用 git reset 命令

Git 分支

如果日常自己使用 Git 的話,瞭解 Git 倉庫、Git 工作流相關命令基本就能滿足需求。實際開發工作中還要用到分支。

  1. 分支的理解
    摘錄:Pro Git - 分支簡介
    常金:多讀幾遍 Pro Git 上的這段介紹,結合參考資料中的怎麼理解 git 的快照細細品味吧
  2. git branch
    分支命令總結:依然是增刪改查 多一個切換 合併 變基
    在這裏插入圖片描述
  3. 遠程分支、跟蹤分支
    摘錄:Pro Git - 遠程分支
    常金:
    在這裏插入圖片描述
  4. 分支流水線及特性分支
    摘錄:閱讀 Pro Git 中,這一節分支開發工作流,瞭解更多。
    常金:平常開發中常常會遇到 masterdevelophotfix-xxfeature-xxx 這種命名的分支。其實這只是一種約定俗成,
    master 一般作爲主分支,其代碼一般較爲穩定用來發布到生產環境;
    develop 一般作爲開發分支,開發完成的某個功能,合併到develop分支上,一般對應到測試環境;
    feature-xx 分支,開發某些特定功能時使用;
    hotfix-xx 分支一般解決某些 BUG 時使用,解決後直接合併到 master 分支,發佈到生產;
    另外還有一些公司會用到 release 分支等,其實也是公司內部的約定,不同公司情況不盡相同,不過大概意思都是差不多的。
  5. 變基
    摘錄:變基
    常金:重點就是一句話。變基的原理:提取差異,目標分支上重新應用差異

Git 其他命令

Git 的其他命令一般不是很常用,理解上邊的三部分就夠日常開發使用了;自己嘗試使用下看下效果。

參考資料
[1] Pro Git
[2] 如何理解git的快照?

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