史上最全 Git 圖文教程,沒有之一

Git 安裝

安裝
  1. 先去官網下載這個軟件, 準備安裝到本電腦中

https://git-scm.com/

  1. 根據自己電腦系統下載此軟件到本機

Windows 系統直接下載 .exe 文件即可,macOS 系統使用 Homebrew 命令行安裝,終端輸入 git --version 確認安裝

  1. 默認選擇默認安裝路徑即可,如若想更改路徑,務必使用英文路徑

  2. 對於 Windows 系統,查看安裝是否成功: 在任意文件夾右鍵,查看是否有Git Base Here 選項,有就成功了

介紹

Git 的三個區域:

在文件夾的體現如下:

在代碼中的體現如下:

Git 使用

官方文檔:教程鏈接 [1]

菜鳥教程:教程鏈接 [2]

Git 配置

安裝完 Git 之後,要做的第一件事就是設置你的用戶名和郵件地址。因爲每一個 Git 提交都會使用這些信息

命令格式如下:中文自己看情況換

git config --global user.name 你的用戶名
git config --global user.email 你的郵箱地址

運行命令效果如下:

配置後,可以運行如下命令查看是否成功

git config --list
#如果信息太多,可以輸入 q 退出

運行命令效果如下:

出現以上內容即爲註冊成功。如果後續想要修改,只需要重新執行一下命令即可

文件右側標記

一般使用 VSCode 打開一個包含 git 倉庫的文件夾時,會有這些標記

右側沒有標記的時候爲未修改 或 此文件 / 文件夾,被 git 忽略不跟蹤變化

Git 基礎命令

初始化空的 Git 倉庫

新建一個文件夾或現有的文件夾並不是 git 倉庫,因爲文件夾內不包含 .git 文件夾,沒有被 git 管理

可以在新文件夾或現有文件夾,運行如下命令得到 .git 文件夾,初始化成功則可讓 git 開始準備管理

# 初始化 git 倉庫, 產物: .git 文件夾 (所在文件夾"內"被管理)
git init

例如,在新文件夾中輸入git init命令用於初始化空的 git 版本庫

初始化空的 git 倉庫成功後,在項目文件夾中,開啓顯示隱藏文件,即可查看 .git 文件夾

記錄更新到 Git 倉庫

每當完成了一個階段的目標,想要記錄下它時,就將它提交到倉庫

核心操作:工作區開發--->將修改後的文件添加到暫存區--->將暫存區的文件記錄到版本庫

把工作區變化放到暫存區中,執行如下命令

# 將 index.html 添加到暫存區
git add index.html

# 將css目錄下一切添加到暫存區
git add css

如下命令,可以一次性把所有變化文件放入暫存區

# .的意思是當前目錄下所有變化都暫存
git add .

把暫存區內容,提交到版本庫,命令如下(此處文字說明可以不加引號)

git commit -m '提交的內容說明'

過程圖示:

以上命令相當於存檔了一次,在版本庫中產生一次提交記錄並生成版本號

本次存檔,不耽誤我們在工作區 (項目文件夾) 下繼續編寫項目

Git 日誌及狀態查看

查看所有提交的日誌記錄,命令如下

git log

運行命令效果如下:

當我們的日誌越來越多,可能想要簡化查看,可以輸入如下命令

--oneline:在一行顯示簡略信息

git log --oneline

運行命令效果如下:

如果改的代碼過多,忘記改過哪些了,可以運行如下命令來查看 git 倉庫變化,只能看未提交的所有變更的文件狀態

git status

運行命令效果如下:

暫存並再次提交,產生一次版本記錄

git add .
git commit -m '新建登錄頁面_和樣式'

過程圖示:

Git 版本回退

時光機,回到過去~

回退命令語法如下

git reset --hard 版本號

查看版本號(每次的版本號隨機生成)

git log --oneline

嘗試回退到 477321b 這次記錄上

git reset --hard 477321b

觀察工作區,回退成功

如果想要在回到最近一次提交的記錄,但發現 git log 看不到未來的記錄了,問題不大。輸入git reflog命令,可以查看 git 所有的操作記錄,包括你的 reset 記錄

git reflog

運行命令效果如下:

拓展命令:

Git 忽略文件

有的時候,我們某些文件或文件夾不想讓 git 進行跟蹤管理。這時候可以在 .git 文件夾同級目錄下新增.gitignore的忽略文件並寫入忽略規則(此處的文件名就是 .gitignore ,不是後綴)

項目文件夾結構如下:

# .gitignore內容:
password.txt

其餘用法:
# 忽略文件夾
css
# 忽略文件夾下的某個文件
css/index.js
# 忽略文件夾下某類文件
css/*.js

根目錄新建 password.txt,查看 git 追蹤到了哪些變化

git status

運行命令效果如下:

發現只新增了.gitignore ,符合規則的都被忽略掉了

.gitignore文件在項目中可以根據腳手架自動生成,無需自己編寫,當然如果你非要寫,以下是 Vue 官方自動生成的.gitignore文件代碼,可供複製使用

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
Git 分支

分支本質

分支其實就是一個叫 HEAD 的指針標記,每次代碼提交,此 HEAD 指針都會往後移動一次,保證指向的 (並且工作區裏的) 都是最後一次提交

例如:當我們輸入命令:git reset --hard a3bcab2,HEAD 指針會移動,而且 HEAD 移動後,會影響工作區裏的代碼

創建分支

# 創建分支
git branch 分支名

該命令創建分支後不會自動切換分支,我們可以運行命令查看現在這個 .git 版本庫裏所有分支

# 查看當前版本庫所有分支,綠色帶*代表現在所處的分支
git branch

運行命令效果如下:

# 切換分支命令
git checkout 分支名

運行命令效果如下:

第一次創建並切換到 reg 分支,你會發現 master 分支上的所有代碼 (和當前節點所有提交記錄) 都被複制了過來 了,我們只需要在這個基礎上接着往後開發就行

過程圖示:

分支下開發流程

我們現在就可以在當前 reg 分支下來編寫註冊頁面的邏輯代碼,例如新建reg.html文件,並隨便寫點內容。隨後暫存並提交一次,這次提交的記錄會出現在這裏,如圖

以後在當前 reg 分支下開發,就會在 reg 範圍內,每次提交產生一次版本記錄,不會影響到別的分支

分支合併

我們可以把分支裏寫好的代碼,合併到主分支或其他分支上,步驟如下:

首先,切換到你要合併到的目標分支上(以 master 主分支爲例)

# 切換分支
git checkout master

切換分支後,HEAD 指針位置如下:

合併命令語法

# 把目標分支名下的所有記錄, 合併到當前分支下
git merge 目標分支名

這裏我們執行命令git merge reg,執行後效果如圖:

可見,reg 代碼提交記錄已經複製到了 master (主分支) 中

分支刪除

假如註冊功能開發完畢,代碼已經合併到 master 分支上,我們已經不需要 reg 分支

命令如下

git branch -d 分支名

如果分支的修改沒有被合併到其他分支上,Git 會提示一個類似以下的錯誤信息:

error: The branch 'branch_name' is not fully merged. If you are sure you want to delete it, run 'git branch -D branch_name'.

在這種情況下,Git 建議你確認是否要刪除這個分支。如果你確定要刪除該分支並且不在乎丟失該分支的修改,你可以使用git branch -D <branch_name>命令來強制刪除該分支。但請注意,這樣會丟失掉分支上的未合併修改

分支合併時的衝突問題

在兩個分支修改了同一個文件並提交過,在合併的時候,就會產生衝突

這裏模擬一次簡單的衝突:

發生衝突後,VSCode 界面

此時我們要進行抉擇:採用當前更改採用傳入更改全部保留

選擇保留方式後,需要再次暫存提交一次

此時結束衝突狀態,變回正常狀態

打印衝突合併後的日誌記錄

總結:當我們合併遇到衝突了,應手動解決,然後暫存,提交一次即可

Git 分支流程圖詳解(拓展)

HEAD 頭指針,它指向當前所在的分支或者某個具體的提交記錄。每次提交會產生新的記錄 master 和 HEAD 會後移

以當前節點爲基準創建新的分支 (包含之前的所有提交記錄),git branch reg 就會在當前的提交記錄上創建一個新的指針,名稱爲 reg

git checkout reg切換的是 HEAD 指針指向 (切換分支)

註冊頁面新建後,git add .添加到暫存區,git commit -m 產生了一次提交記錄

註冊頁面的樣式新建後暫存提交,產生了一次提交記錄

合併分支,例如把 A 合併到 B 上

先切換到主分支git checkout master

合併 reg 分支git merge reg

在 reg 分支下,修改了index.html文件,並暫存提交,產生了記錄

切換到 master 分支,並修改index.html文件 (同一個文件),暫存提交,產生了記錄

在 master 分支中,想要把 reg 合併過來。由於修改了同一個文件,會報錯,需要解決衝突

手動解決衝突後,會產生一個新的提交記錄

刪除 reg 分支,全部過程結束

Git 遠程倉庫

介紹

遠程倉庫是指託管在因特網或其他網絡上的 Git 倉庫,可以存儲我們版本庫的所有記錄和存檔記錄

遠程倉庫在團隊協作中發揮着重要的作用。它不僅可以充當備份存儲,保護你的代碼免受數據丟失的風險,還可以讓團隊成員之間輕鬆地共享代碼、查看代碼變更、進行代碼審查等

主流的遠程倉庫有 GitHub (gay hub) 全球最大的同行交友社區,以及服務器在國內的 gitee(碼雲)。由於 GitHub 服務器在國外,方便起見,這裏以碼云爲例,供初學者參考,GitHub 流程與 gitee 類似

註冊

註冊登錄 gitee.com 網站以後,添加主郵箱爲自己本地 git 倉庫設置的郵箱,注意一定要相同,否則無法正確提交 如果忘記了本地設置的郵箱地址:

郵箱設置界面不要勾選不公開我的郵箱地址,否則也無法正常提交

倉庫新建

可以選擇創建一個遠程倉庫的項目 (可以多個),創建界面如下

勾選完成後選擇創建,創建後, 會得到一個遠程倉庫的地址鏈接,一般是以.git結尾的地址

地址分爲兩種最常用的兩種傳輸協議:

選擇 SSH 路徑,界面如下

SSH 配置

我們可以在本機一次性配置 SSH 以後免密登錄,SSH 密鑰組成和作用如下:

私鑰加密的信息,只能通過公鑰解密。公鑰加密的信息,只能通過私鑰解密。安全性高!

SSH 密鑰創建與使用步驟:

初始化空倉庫

先給本地倉庫配置個遠程倉庫的地址, 建立倉庫之間的鏈接

由於每次 push 操作都需要帶上遠程倉庫的地址,十分麻煩,我們可以給倉庫設置一個別名

# 給遠程倉庫設置一個別名
git remote add 倉庫別名 倉庫地址
git remote add origin git@gitee.com:(username)/repository.git

# 刪除 origin 這個別名
git remote remove origin

# 使用 -u 記錄 push 到遠端分支的默認值,將來直接 git push 即可
git push -u 倉庫別名 分支名

下面爲實際操作舉例:

# 注意:這裏的existing_git_repo是你的項目根路徑
# 如果你是在項目文件夾開啓的終端,忽略此行
cd existing_git_repo

# 添加遠程倉庫關聯,倉庫別名origin,可以隨意更改,後接ssh地址
# 此處的ssh是自動生成的,可以去gitee空倉庫的代碼頁直接複製即可
git remote add origin git@gitee.com:li-houyi/test-factory.git

# 第一次推送到遠程時需要指定具體的分支,因爲遠程倉庫並沒有這個分支
# 使用 -u 記錄 push 到遠端分支的默認值,將來直接 git push 即可
git push -u origin "master"

注意:推送的本地倉庫一定要非空並且本地暫存提交過,不然會報錯!這點也很好理解,你傳個空的項目到一個空倉庫,這可不得給你報錯嗎

空倉庫創建成功後可以在管理頁面將倉庫開源,當然也可以不設置開源(默認私有)

克隆項目

如果你想要從遠程倉庫克隆一份項目代碼到本地進行開發,可以使用 git clone 命令

git clone [options] <repository-url> [directory]
# directory(可選)克隆後的本地倉庫所處的目錄名稱(默認創建與遠程倉庫名字相同的目錄)

常見選項:

如果項目只有一個分支,那麼以上代碼執行完畢就已經克隆結束了(git clone 默認拉取 master 分支),不過實際開發中,並非只有一個分支,於是我們還需執行以下步驟:

git checkout -b 對應遠程分支名
# 每次拉取都需要指定遠程倉庫名和分支名
git pull 遠程倉庫名 分支名
git checkout -b 分支名 origin/分支名
git branch --set-upstream-to=origin/遠程分支名 本地分支名

Git 遠程倉庫流程回顧

Step1:

Step2:

Step3:

Step4:

Git 常用命令總覽

本命令默認遠程倉庫名爲 origin、默認遠程倉庫主分支名爲 master、<>爲必填項,[]爲可選項

參考資料

[1]

官方教程鏈接: https://git-scm.com/book/zh/v2 / 起步 - 關於版本控制

[2]

菜鳥教程鏈接: https://www.runoob.com/git/git-tutorial.htm

來源:juejin.cn/post/7245176801491894333

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/U3pTkEYgwD-dD7EaGa6wIw