1. 程式人生 > 實用技巧 >Git 常用操作彙總——cheat sheet

Git 常用操作彙總——cheat sheet

0. 前言

大家好,我是多選引數的程式設計師,一個正在 neng 作業系統、學資料結構和演算法以及 Java 的硬核菜雞。到今天為止,關於 Git 的大坑算是給填上了。但是 Git 這個系列並不會結束,程式設計師偶爾看到比較好的關於 Git 的文章也會整理一番發出來,爭取在 Git 的坑上再長棵樹。

1. 常用命令

1.1. git 配置

# 顯示 config 的配置 加--list
# 優先順序:local > global > systemgit config --list --local # local 的範圍是某個倉庫git config --list --global # global 的範圍是登入的使用者git config --list --system # system 的範圍是系統所有登入的使用者# 配置使用者 name 和 emailgit config --global user.name 'your_name '
git config --global user.email '[email protected]'
# 清除配置資訊git config --unset --global user.name

1.2. 倉庫初始化

# 將執行該命令時所在的目錄初始化為一個 git 倉庫(如:進入某目錄後執行該命令會將該目錄初始化為一個 git 倉庫)
git init
# 會在當前路徑下建立和專案名稱同名的資料夾,並將其初始化為 git 倉庫git init your_project

1.3. git add

git add readme.md # 將 readme.md 檔案新增到暫存區
git add . # 將當前工作目錄的所有檔案新增到暫存區
git add -u # 把修改之後的檔案(這些檔案已經被管理起來了)一次性提交到暫存區

1.4. git status

git status # 檢視工作目錄和暫存區的狀態

1.5. git commit

git commit -m 'Add readme.md' # -m 指定 commit 的資訊
git commit # 這時候會跳出一個文字輸入介面,讓你輸入更多的 commit 資訊

1.6. git mv

git mv readme readme.md # 將 git 管理的檔案進行重新命名

1.7. git rm

git rm filename # 從 git 管理的檔案刪除某個已管理的檔案,同時把修改的情況新增到暫存區

1.8. git log

git log # 只檢視當前分支(Head所指的分支)的log情況
git log --oneline # 簡潔的顯示版本更新資訊
git log -n2 # n2 代表檢視最近兩次commit歷史
git log -2 # 2 代表檢視最近兩次commit歷史
git log -n2 --oneline # 簡潔的顯示最近兩次的版本更新資訊
git log branch_name # 後面跟上分支名錶示檢視該分支的log日誌
git log -all # 列出所有分支的log
git log --all --graph # 以圖形化的方式檢視
git log --oneline --all # 以簡潔的方式檢視所有分支的log
git log --oneline --all -n4# 以簡潔的方式檢視所有分支的log
git help log # 以web的方式檢視log的幫助文件,等同於
git help --web log # 和上面那條效果一樣

2. 分支相關

git branch -v # 檢視本地分支的詳細情況
git branch -a # 檢視所有分支,包括遠端分支,但沒有過於詳細的資訊
git branch -av # 檢視所有分支情況
git branch branch_name hash_value # 建立一個新的分支,基於 hash_value 的這個 commit 建立一個新的分支,hash_value 可以省略,那麼預設是基於當前分支的最後一個 commit 建立。
git branch -d branch_name
git branch -D branch_name # 這個分支已經有了一些 commit
git checkout branch_name # 切換分支
git checkout master
git checkout -b branch_name git_id # 建立一個新的分支並切換過去,git_id可以是hash_value,也可以是某個分支的名字(分支的名字其實就指向了某個 commit)
git checkout -b temp 9ef147d
git checkout -b temp2 master
git checkout hash_value # 分離頭指標

3. 比較

git diff hash_value1 hash_value2 # hash_value1 對應的 comimit 和 hash_value2 對應的 commit 進行比較
git diff hash_value1 hash_value2 -- file_name1 file_name2 # 在上述基礎之上,只比較 file_name1、file_name2 這兩個檔案
git diff branch_name1 branch_name2 # 對兩個分支進行比較,也可以跟 -- 只看某些檔案
git diff HEAD HEAD^ # HEAD 指向的 commit 與該 commit 的父親 commit 進行比較
git diff HEAD HEAD^^ # HEAD 指向的 commit 與該 commit 的父親的父親 commit 進行比較
git diff HEAD HEAD~ # HEAD 指向的 commit 與該 commit 的父親 commit 進行比較
git diff HEAD HEAD~1 # 同上
git diff HEAD HEAD~2 # HEAD 指向的 commit 與該 commit 的父親的父親 commit 進行比較
git diff --cached # 暫存區和 HEAD 做比較,也可以跟 -- 只看某些檔案
git diff # 工作目錄和暫存區中所有檔案進行比較,也可以跟 -- 只看某些檔案

4. 版本歷史更改

git commit --amend # 最近一次 commit 的 message 修改
git rebase -i hash_value # 互動檔案中選擇 reword,老舊 commit 的 message 修改。hash_value,是需要的 commit 的父親 commit 的 hash_value
git rabase -i hash_value # 互動檔案中選擇 squash,多個連續 commit 合併成一個,hash_value 同上
git rebase -i hash_value # 互動檔案中選擇 squash,把間隔的 commit 移到一塊,即可合併成一個,hash_value
git rebase origin/master # 把當前分支基於 origin/master 做 rebase 操作,也就相當於把當前分支的東西加到 origin/master 中

5. 回滾操作

git reset HEAD        # 暫存區恢復成和 HEAD 一樣
git reset HEAD -- file_name1 file_name2 # 暫存區部分檔案變得跟 HEAD 一樣
git checkout -- file_name # 工作目錄指定檔案恢復為和暫存區一樣
git checkout -- *|. ## 工作目錄全部檔案恢復為和暫存區一樣
git reset --hard hash_value # 把 HEAD、暫存區、工作目錄都回滾到 hash_value 所代表的 commit 中。
git reset --hard # 把暫存區裡面的修改去掉,也就是讓暫存區、工作目錄預設恢復到 HEAD 的位置

6. 工作目錄、暫存區狀態儲存

git stash # 把相應的修改內容給存下來,之後 git status 檢視的話又變為什麼都沒改變的了
git stash list # 檢視存下來的內容
git stash apply # 存下來的內容又恢復了,但是存下來的內容還在 stash 中
git stash pop # 存下來的內容恢復了,但是存下來的內容也沒了

7. 合併

git merge branch_name1 branch_name2
git merge hash_value1 hash_value2
git merge --squash # 以 squash 方式進行 merge

8. Git 物件操作

git cat-file -t|p|s hash_value # 顯示版本庫物件的內容,型別及大小資訊
git cat-file -t hash_value # 檢視版本庫物件的型別
git cat-file -p hash_value # 檢視版本庫物件的內容
git cat-file -s hash_value # 檢視版本庫物件的大小

9. Git 遠端操作

git remote add <遠端名> <遠端倉庫地址> # 這邊遠端名的意思是遠端倉庫的別名,push、pull 都將用到遠端名
git remote -v # 檢視遠端倉庫連線情況git remote set-url <遠端名> 你新的遠端倉庫地址 # 修改遠端倉庫地址
git remote rm <遠端名> # 刪除遠端倉庫
git clone <遠端倉庫地址> # 把遠端倉庫 clone 下來
git clone --bare <遠端倉庫地址> # bare 是指不帶工作目錄,也就相當於只 clone .git 目錄
git push <遠端名> <本地分支名>
git push -u <遠端名> <本地分支名> # -u 表示將本地分支的內容推到遠端分支,並且將本地分支和遠端分支關聯起來
git push -u origin master # 表示把本地 master 分支的內容推到遠端分支 origin/master,並且將本地分支 master 和遠端分支 origin/master 關聯起來git push # 這條命令也可以使用,預設是將當前本地所在分支推到相關聯的遠端分支git fetch <遠端名> <本地分支名>
git fetch origin master # 將遠端分支 origin/master fetch 到本地git pull <遠端名> <本地分支名> # 將遠端分支 fetch 到本地,並且將遠端分支和本地所處分支進行合併
git pull --rebase # 以 rebase 方式進行合併,也就是將本地分支 rebase 到遠端分支

最後,小編想說:我是一名python開發工程師,

整理了一套最新的python系統學習教程,

想要這些資料的可以關注私信小編“01”即可(免費分享哦)希望能對你有所幫助.