文章目錄
本文轉載於《多選參數》一份 Git cheat sheet 送給您
常用命令
git 配置
# 顯示 config 的配置 加--list
# 優先級:local > global > system
git config --list --local # local 的範圍是某個倉庫
git config --list --global # global 的範圍是登錄的用戶
git config --list --system # system 的範圍是系統所有登錄的用戶
# 配置用戶 name 和 email
git config --global user.name 'your_name '
git config --global user.email '[email protected]'
# 清除配置信息
git config --unset --global user.name
倉庫初始化
# 將執行該命令時所在的目錄初始化爲一個 git 倉庫(如:進入某目錄後執行該命令會將該目錄初始化爲一個 git 倉庫)
git init
# 會在當前路徑下創建和項目名稱同名的文件夾,並將其初始化爲 git 倉庫
git init your_project
git add
git add readme.md # 將 readme.md 文件添加到暫存區
git add . # 將當前工作目錄的所有文件添加到暫存區
git add -u # 把修改之後的文件(這些文件已經被管理起來了)一次性提交到暫存區
git status
git status # 查看工作目錄和暫存區的狀態
git commit
git commit -m 'Add readme.md' # -m 指定 commit 的信息
git commit # 這時候會跳出一個文本輸入界面,讓你輸入更多的 commit 信息
git mv
git mv readme readme.md # 將 git 管理的文件進行重命名
git rm
git rm filename # 從 git 管理的文件刪除某個已管理的文件,同時把修改的情況添加到暫存區
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 # 和上面那條效果一樣
分支相關
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 # 分離頭指針
比較
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 # 工作目錄和暫存區中所有文件進行比較,也可以跟 -- 只看某些文件
版本歷史更改
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 中
回滾操作
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 的位置
工作目錄、暫存區狀態保存
git stash # 把相應的修改內容給存下來,之後 git status 查看的話又變爲什麼都沒改變的了
git stash list # 查看存下來的內容
git stash apply # 存下來的內容又恢復了,但是存下來的內容還在 stash 中
git stash pop # 存下來的內容恢復了,但是存下來的內容也沒了
合併
git merge branch_name1 branch_name2
git merge hash_value1 hash_value2
git merge --squash # 以 squash 方式進行 merge
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 # 查看版本庫對象的大小
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 到遠端分支