Skip to content

Git 命令快速考查表

Git 是一個開源的分布式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理。Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。

Git 基礎

git init <directory>

在指定目錄中創建空的 Git 倉庫。在沒有參數的情況下運行,則將當前目錄初始化為 Git 倉庫。

git clone <repo>

將位於 <repo> 的倉庫克隆到本地機器上。原始的倉庫可以位於本地文件系統上,也可以通過 HTTP 或 SSH 位於遠端機器上。

git config user.name <name>

定義作者名用於當前倉庫中的所有提交。

git add <directory>

為下一次提交,添加在 <directory> 變更的內容。

git commit -m "<message>"

提交階段快照,使用 <message> 作為提交消息。

git status

列出哪些文件處於暫存、未暫存和未跟踪狀態。

git log

使用默認格式顯示整個提交歷史記錄。

git diff

對比工作目錄(未 git add)和暫存區(git add 之後)的差異。

取消修改

git revert <commit>

創建新的提交,取消 <commit> 中所做的所有更改,然後將其應用於當前分支。

git reset <file>

從暫存區刪除 <file>,但保持工作目錄不變。這將在不覆蓋任何更改文件的情況下取消文件的暫存狀態。

git clean -n

顯示將從工作目錄中刪除哪些文件。使用 -f 標誌代替 -n 標誌來執行清理。

Git 重寫歷史

git commit --amend

修改最後一次的 Git 提交。如果工作目錄有可提交的變更,在使用 git commit --amend 命令修改後,工作目錄最新的變更也將一起被提交。

git rebase <base>

將當前分支重設為 <base>。<base> 可以是提交 ID、分支名稱、標籤或 HEAD。

git reflog

可以查看所有分支的所有操作記錄(包括已經被刪除的 commit 記錄和 reset 的操作)。

Git 分支

git branch

列出所有的分支。添加一個 <branch> 參數來創建一個名為 <branch> 的新分支。

git checkout -b <branch>

創建並檢出一個名為 <branch> 的新分支。去掉 -b 以簽出現有的分支。

git merge <branch>

將 <branch> 分支合併到當前分支中。

遠端倉庫

git remote add <name> <url>

添加一個新的遠端倉庫。添加遠端之後,可以在其他命令中使用 <name> 作為 <url> 的快捷方式。

git fetch <remote> <branch>

從倉庫獲取指定 <分支> 的全部更新內容,但不會與本地分支合併。

git pull <remote>

獲取當前分支的指定遠端副本,並立即將其合併到本地副本中。

git push <remote> <branch>

將分支推到 <remote>,以及必要的提交和對象。如果遠端倉庫不存在,則在遠端倉庫中創建命名分支。

git config

git config --global user.name <name>

定義作者名,以供當前用戶的所有提交使用。

git config --global user.email <email>

定義作者電子郵件用於當前用戶的所有提交。

git config --global alias.<alias-name> <git-command>

為 Git 命令創建一個快捷方式(別名)。

git config --system core.editor <editor>

為計算機上的所有用戶設置命令使用的文本編輯器。

git config --global --edit

在文本編輯器中打開全局配置文件以進行手動編輯。

git log

git log -<limit>

顯示 <limit> 條提交歷史記錄。

git log --oneline

顯示提交歷史記錄,並將每個提交壓縮到一行。

git log -p

顯示提交歷史記錄,並顯示每個提交的完整差異。

git log --stat

顯示提交歷史記錄,包括哪些文件被修改,以及從每個文件中添加或刪除的相對行數。

git log --author="<pattern>"

搜索指定作者的提交。

git log --grep="<pattern>"

使用正則匹配搜索提交歷史記錄。

git log <since>..<until>

顯示發生在 <since> 和 <until> 之間的提交。

git log -- <file>

僅顯示包含指定文件的提交記錄。

git diff

git diff HEAD

對比工作目錄(未 git add)和版本庫(git commit 之後)的文件差異。

git diff --cached

對比暫存區(git add 之後)和版本庫(git commit 之後)的文件差異。

git reset

git reset

重置暫存區以匹配最近的提交,但保持工作目錄不變。

git reset --hard

重置暫存區和工作目錄為最近的提交,並覆蓋工作目錄中的所有更改。

git reset <commit>

將當前分支提示向後移動到 <commit>,將暫存區重置,但不改變工作目錄。

git reset --hard <commit>

與前面相同,但將暫存區和工作目錄重置。刪除未提交的更改,以及 <commit> 之後的所有提交。

git pull

git pull --rebase <remote>

獲取當前分支的遠端副本並將其重置為本地副本。使用 git rebase 而不是 merge 來集成分支。

git push

git push <remote> --force

強制推送。

git push <remote> --all

將所有本地分支推到指定的遠端。

git push <remote> --tags

將所有本地標籤推送到遠端倉庫。