Git命令簡潔使用指南

Dikato發表於2020-12-09

首先:
本文不適合Git小白作為入門的學習。
本文旨在整理常用的Git命令,以便加深印象,和方便日常使用的查閱。
俗話說的話,好記性不如爛筆頭。
這篇老早就想寫的Git總結,拖著拖著應該有兩個月了吧,今天得空,寫了。
不過需要一提的是,本文屬於整理記錄類的文章,因此筆者會在日常實踐中不斷對本文進行補充完善。
如果您在此停留過,亦有所收穫,不妨點贊收藏關注,回頭不迷路!

  • 溫馨提示
    本文所有"Firstname Lastname"、"your_email@example.com"讀者均需要替換為自己實際的暱稱和郵箱。

一、Git初始設定

1.1 設定姓名和郵箱地址

git config --global user.name "Firstname Lastname"
git config --global user.mail "your_email@example.com"

1.2 提高命令輸出的可讀性

git config --global color.ui auto

三、設定SSH Key

  • GitHub連線已有倉庫時可以通過SSH的公開金鑰認證的方式進行。
  • 下邊介紹如何建立公開金鑰認證所需的SSH Key,並將其新增至GitHub。
  • 執行下面的命令建立SSH Key
ssh-keygen -t rsa -C "your_email@example.com"
  • 輸入上述命令後,按如下操作執行,括號內是對應的操作:
    (your_user_directory會是你自己對應的目錄)
Generating public/private rsa key pair.
Enter file in which to save the key 
(/Users/your_user_directory/.ssh/id_rsa): (按Enter鍵)
Enter passphrase (empty for no passphrase): (輸入密碼)
Enter same passphrase again: (再次輸入密碼)
  • 上述操作完成後:

  • 你的金鑰存放在 “Users/your_user_directory/.ssh/id_rsa

  • 你的公鑰存放在 “Users/your_user_directory/.ssh/id_rsa.pub

  • id_rsa檔案是私有金鑰id_rsa.pub是公開金鑰

  • 這裡關於私鑰公鑰就不展開說了,你如果不瞭解可以後續去查閱資料學習。只需要知道,這兩者是配對的,成功配對才能認證通過。

  • 所以我們要把公開金鑰存放到遠端倉庫上,也就是GitHub,這樣本地的Git連線遠端倉庫的時候就會拿著本地的私鑰和遠端GitHub的公鑰進行配對,成功配對兩者就通過認證連線上了,可以不輸入賬號密碼。

  • 下面看如何在GitHub新增公鑰:

  1. 登入GitHub,右上角頭像,點選有下拉選單,進入Settins設定。

在這裡插入圖片描述

  1. 右側選單欄中選擇SSH and GPG keys點選進入。
    在這裡插入圖片描述

  2. 進來後點選New SSH key
    在這裡插入圖片描述

  3. 進入新增頁面,按圖示新增。

在這裡插入圖片描述

四、GitHub建立倉庫

在這裡插入圖片描述

五、Git常用命令

5.1 clone倉庫

  • GitHub的每個倉庫會有自己的SSH clone URL格式是這樣子的
	git@github.com:使用者名稱/倉庫名.git
  • 這邊以使用者名稱為LiMing為例,倉庫名為Hello-World為例,說明clone命令
git clone git@github.com:LiMing/Hello-World.git

5.2 初始化倉庫

  • 從遠端倉庫clone某倉庫到本地,可以在本地初始化一個Git倉庫。
  • 也可以用,之間在本地初始化建立的方法來初始化倉庫,只是這樣子初始化(建立)的倉庫還沒有和遠端的某個倉庫建立聯絡。
  • 本地初始化倉庫(要在工作目錄裡執行)
git init
  • 執行了git init命令的目錄下就會生成 .git 目錄,這個 .git 目錄裡儲存著管理當前目錄內容所需的倉庫資料。可以理解為是一個倉庫的工作樹,你對該倉庫所有的操作都會被記錄在.git。

5.3 檢視倉庫資訊

  • 檢視倉庫狀態
git status
  • 檢視倉庫提交日誌
git log
  • 只顯示提交資訊的第一行
git log --pretty=short
  • 只顯示與某目錄或檔案有關的日誌
git log 目錄名或檔名

git log README.md
  • 檢視提交帶來的改動
git log -p 目錄名/檔名/不加
  • 檢視更改前後的差別
git diff

5.4 向暫存區中新增檔案

  • 新增某具體檔案
git add hello_world.php
  • 新增全部檔案
git add .

5.5 正式提交

git commit -m "本次提交的說明資訊"
  • git commit命令可以將當前暫存區中的檔案實際儲存到倉庫的歷史記錄中
  • 修改提交資訊

```bash
git commit --amend

## 5.6 分支操作
* 顯示分支一覽表

```bash
git branch
  • 建立並切換到分支
git checkout -b 分支名

和下面兩個命令連續執行等價

git branch 分支名     #建立分支
git checkout 分支名   #切換分支
  • 切換回上一個分支
git checkout -
  • 合併分支
git merge --no-ff feature-A
  • 分支合併的衝突

當兩個分支合併時發生衝突,需要解決衝突(選擇保留什麼,捨棄什麼),才能進行合併。

  • 以圖表形式檢視分支
git log --graph

5.7 狀態回溯

  • 通過日誌查詢 可以查到每次提交的雜湊值,可以通過某個時刻的雜湊值作為某個狀態,來進行回溯。
git reset --hard 目標時間點的雜湊值
  • 因為當回溯到之前的某個狀態(相當於穿越了),這時候使用git log只能檢視該時間點及其之前的日誌,無法查到該倉庫全部的日誌。
  • 使用git reflog可以檢視當前倉庫執行過的所有操作日誌,就相當於你穿越回去了,你還可以檢視你所在時間之後的所有的日誌。
git reflog

還有一個作用就是通過git reflog回到現在。為什麼呢?首先要進行狀態的回溯是用“git reset --hard 目標時間點的雜湊值”,這時候需要有時間點的雜湊值。如果你想跳回現在,那麼你就需要知道現在的雜湊值,所以需要用git reflog檢視現在的雜湊值。

5.8 壓縮歷史

  • 大家想象這麼一個場景,有兩個時間點,時間1 和 時間2,這兩次提交的改動是因為一些認為的誤操作導致的,比如拼寫錯誤。那麼這兩個時間點中間的提交其實沒有什麼意義,我們覺得記錄這種無關緊要的變化是沒有意義,因此可以將這兩個時間點的兩次提交合併為一次,相當於把修正認為錯誤的最後一次提交捨棄掉。
git rebase -i HEAD~2

5.9 推到遠端倉庫

  • 給本地倉庫繫結遠端倉庫
    要把本地倉庫推到哪個遠端倉庫,需要提前把兩者關聯起來。
git remote add origin git@github:LiMing/HelloWorld.git

這裡的orgin是一個識別符號,表示給本地倉庫新增了一個代號為origin的遠端倉庫,這個遠端倉庫具體是git@github:LiMing/HelloWorld.git

  • 推送至master分支
git push -u origin master

將本地倉庫的master分支推送到識別符號為origin的遠端倉庫。

5.10 從遠端倉庫獲取

  • clone
git clone git@github.com:LiMing/HelloWorld.git

執行git clone命令後,本地會預設處於master分支下,同時系統回自動將origin設定為該遠端倉庫的識別符號。

  • 獲取遠端倉庫的feature-D分支
git checkout -b feature-D origin/feature-D
  • 獲取最新的遠端倉庫分支
git pull origin feature-D

相關文章