1. 程式人生 > 其它 >Git 命令大全,Git命令彙總,Git命令說明

Git 命令大全,Git命令彙總,Git命令說明

一、配置操作

# 配置倉庫 | 使用者 | 系統級別的使用者名稱
git config --user | --global | --system user.name 'username'

# 配置倉庫 | 使用者 | 系統級別的郵箱
git config --user | --global | --system user.email '[email protected]'

# 檢視所有的配置以及它們所在的檔案
git config --list --show-origin

# 檢視倉庫 | 使用者 | 系統級別配置
git config --local | --global | --system -l

# 編輯倉庫 | 使用者 | 系統級別配置
git config --local | --global | --system -e

# 新增一個倉庫 | 使用者 | 系統配置項
git config --local | --global | --system --add user.name joshua317

# 獲取一個倉庫 | 使用者 | 系統配置項
git config --local | --global | --system --get user.name

# 移除一個倉庫 | 使用者 | 系統配置項
git config --local | --global | --system --unset user.name

二、基本操作

# 初始化一個倉庫
git init

# 建立一個祼倉庫
git init --bare project-name.git

# 從指定地址克隆一個倉庫
git clone url

# 克隆特定的標籤
git clone --branch <tag> <repo>

# 淺克隆最近一次提交記錄的給定倉庫
git clone -depth=1 <repo>

# 克隆遠端倉庫的某個分支
git clone -branch new_feature <repo>

# 檢視當前工作區狀態
git status

# 將當前目錄下的所有檔案新增到暫存區
git add .

# 添加註釋並提交
git commit -m 'xxx'

# 合併上一次提交(反覆修改)
git commit --amend -m 'xxx'

# 將 add 和 commit 合併為一步
git commit -am 'xxx'

# 刪除暫存中指定的檔案
git rm path/to/filename

# 將本地與遠端分支關聯起來
git remote add origin <user>@<host>:/path/to/repository/<project-name>.git

# 關聯分支到到遠端倉庫的master分支
git push -u origin master

# 設定讓本地某個分支跟蹤遠端的某個分支
git branch --set-upstream-to=origin/<branch> <branch>

# 從暫存區將檔案移除
git rm --cached filename

# 將檔案徹底從暫存區放
git checkout -- filename

# 檢出遠端分支hotfix/fix-menu並建立本地跟蹤分支
git checkout --track hotfix/fix-menu

# 顯示進度列表
git stash list

# 給當前儲存的修改起個名字
git stash save <message>

# 取出給定的暫存
git stash apply stash@{X}

# 將記錄列表中取出的給定暫存記錄刪除
git stash drop stash@{X} 

三、分支操作

# 顯示本地分支
git branch

# 顯示所有分支
git branch -a

# 刪除未曾合併過的分支
git branch -D

# 刪除已經合併過的分支
git branch -d

# 本地分支重新命名
git branch -m oldName newName

# 刪除遠端分支
git push --delete origin <branch-name>

# 把本地分支與遠端分支關聯起來
git branch --set-upstream-to origin/newName

# 檢視當前的本地分支與遠端分支的關聯關係
git branch -v

# 檢視本地當前分支與遠端某一分支的差異
git diff origin/develop

# 檢視本地 master 分支與遠端 master 分支的差異
git diff master origin/master 

四、合併操作

# 將遠端 master 分支合併到本地 master
git merge origin/master

# 將 develop 分支合併到當前分支(不使用 Fast-forward)
git merge --no-ff develop

# 用 mergetool 解決衝突
git mergetool

# 把 a 分支合入到當前分支,且為 merge 建立 commit
git merge a

# 把 a 分支合入到 b 分支,且為 merge 建立 commit
git merge a b

# 匯合提交:將之前的三次提交合併到一處(squash)
git rebase -i HEAD~~~

# 修改提交(edit)
git rebase -i HEAD~3

# 把當前分支基於 b 分支做 rebase,以便把 b 分支合入到當前分支
git rebase b

# 把當前分支基於 b 分支做 rebase,以便把 b 分支合入到 a 分支
git rebase b a

# 將其它分支上的合適提交挑選到當前分支
git cherry-pick <commit-id> 

五、標籤操作

# 檢視所有標籤
git tag

# 搜尋某個標籤
git tag -l 'v1.1.*'

# 新建某個標籤
git tag -a v1.1.2 -m "Project v1.1.2 Released"

# 推送某個標籤到遠端
git push origin v1.1.1

# 推送所有標籤到遠端
git push origin --tags

# 檢視某個標籤的版本資訊
git show v1.0.2

# 刪除本地標籤
git tag -d v1.0.1

# 刪除遠端標籤
git push origin --delete tag <tag-name>

# 刪除遠端標籤
git push origin -d <tag-name>

# 刪除遠端標籤
git push origin :refs/tags/<tag-name>

六、回滾操作

# 將本地版本退回到某次提交上
git reset --hard <commit-id> 

#本地檔案回滾操作步驟
1. git log filename
2. git reset <commit-id> filename
3. git commit -m "Rollback filename"
4. git checkout filename

# 把暫存區的修改撤銷掉,重新放回工作區
git reset HEAD <檔名> 

# 撤銷上一個提交
git revert HEAD 

# 回退到上一次 reset 之前
git reset --hard ORIG_HEAD

#回滾沒有提交到暫存區的檔案
git checkout ./

七、日誌操作

# 顯示簡略的提交日誌
git log

# 檢視某個檔案變動的具體日誌資訊
git log -- filename

# 檢視最近兩次更新的內容差異
git log -p -2

# 顯示簡要的增改行數統計
git log --stat

# 顯示最後一次提交資訊
git log -1 HEAD

# 單行顯示日誌資訊
git log --pretty=oneline

# 檢視圖文格式日誌
git log --pretty=oneline --graph --abbrev-commit

# 通過 ASCII 藝術的樹形結構來展示所有的分支,每個分支都標示了它的名字和標籤
git log --graph --oneline --decorate --all

# 檢視檔案改變資訊
git log --name-status

# 顯示所有提交,包括孤立節點
git reflog

八、遠端操作

# 檢視遠端分支名稱,預設為 origin
git remote

# 檢視遠端倉庫的 URL,可能有多個
git remote -v 

# 檢視某個遠端倉庫的詳細資訊,預設為 origin
git remote show <origin> 

# 新增遠端分支
git remote add <origin> <地址> 

# 修改遠端分支的名稱
git remote rename <old-name> <new-name> 

# 刪除遠端分支
git remote rm <name>

# 將當前名稱為 gitee 的倉庫推送到遠端 master 分支
git push gitee master

# 檢出遠端分支到本地分支
git checkout -b <branch-name> origin/<branch-name>

# 重新命名遠端分支的名稱
git remote rename master master-bak

# 刪除遠端某個分支
git push origin --delete <branch-name>

# 更新遠端分支列表
git remote update origin --prune

# 強制將本地當前分支推送到遠端倉庫對應的分支
git push origin -f

# 將本地 develop 分支推送到遠端倉庫對應的 remotes/origin/develop 分支
git push origin develop

# 將本地所有分支推送到遠端倉庫對應的分支
git push origin --all 

九、統計操作

1.統計倉庫程式碼行數

git log --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'

2.統計指定使用者的程式碼行數

// 將 username 替換具體使用者名稱
git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -

3.統計每個人增刪程式碼行數

git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done

4.統計提交數

git log --oneline | wc -l

5.更加專業的統計工具 gitstats

http://gitstats.sourceforge.net/