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將所有本地標籤推送到遠端倉庫。