Git命令簡潔使用指南
首先:
本文不適合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新增公鑰:
- 登入GitHub,右上角頭像,點選有下拉選單,進入Settins設定。
-
右側選單欄中選擇SSH and GPG keys點選進入。
-
進來後點選New SSH key
-
進入新增頁面,按圖示新增。
四、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
相關文章
- Git命令簡介Git
- git簡單命令Git
- git使用指南Git
- git stash 命令簡單使用Git
- Git submodule使用指南(一)Git
- Git submodule使用指南(二)Git
- Git簡易的命令列入門教程:Git命令列
- 簡潔Java之道Java
- 超詳實Git簡明教程與命令大全Git
- Git基礎命令之git rebase命令Git
- git命令列命令Git命令列
- GIT 命令Git
- git命令Git
- # Git命令Git
- 簡潔地使用 vim
- Git 簡潔教程(1):本地專案如何與 GitHub 遠端倉庫互連?Github
- 【Java學習筆記(五十三)】之Git簡介,Git常用命令Java筆記Git
- Git——rebase命令Git
- Git的命令Git
- git init 命令Git
- git checkout 命令Git
- git命令整理Git
- git show 命令Git
- git status 命令Git
- git命令速查Git
- git push命令Git
- Git是什麼?Git基本命令+工作區命令Git
- JavaScript程式碼簡潔之道JavaScript
- yum安裝簡潔版
- JavaScript 程式碼簡潔之道JavaScript
- Pandas之:Pandas簡潔教程
- JB的git之旅-git命令列Git命令列
- [git]git分支常用命令Git
- Instruments使用指南(一)--- 簡介
- 一種邪道的 Git 整潔之法——rebase & squashGit
- Git命令彙總Git
- git命令總結Git
- git grep命令用法Git