Git 速查表:中級用戶必備的 12 個 Git 命令
在本篇文章中,我們將介紹中級用戶必備的 12 個 Git 命令。
git config
git config 命令用于設(shè)置 Git 配置。使用這個命令,用戶可以在三個不同級別設(shè)置配置:
- 本地級別:在特定的 Git 倉庫中(存儲在項目根目錄的 .git/config 文件中)。
- 全局級別:針對操作系統(tǒng)中的當(dāng)前用戶。
- 系統(tǒng)級別:針對操作系統(tǒng)中的所有用戶。
默認情況下,git config 命令會更改本地級別的設(shè)置。此命令可用于設(shè)置諸如 Git 用戶名、電子郵件地址、默認文本編輯器(如 Vim)、默認合并行為、終端輸出外觀和別名等信息。
例如,可以使用以下命令設(shè)置當(dāng)前用戶的名稱和電子郵件:
git config --global user.name "Your Name"
git config --global user.email "name@example.com"
可以使用以下命令將 Git 的默認文本編輯器設(shè)置為 Vim:
git config --global core.editor "vim"
列出所有當(dāng)前 Git 的配置:
git config --list --show-origin
git mv
git mv 命令用于在 Git 倉庫中移動和/或重命名文件。該命令會在工作目錄中移動文件,并更新 Git 索引中舊文件路徑和新文件路徑。
git mv path/to/old_file_name.ext path/to/new_file_name.ext
需要注意的是,文件在您的文件系統(tǒng)中也會被重命名/移動,所以這個命令一舉兩得。然而,舊文件的歷史記錄都被 Git 跟蹤了,所以如果您發(fā)現(xiàn)需要舊版本,可以隨時找回。
git rm
git rm 命令用于從 Git 倉庫中刪除文件。它會在工作目錄中刪除文件,并從 Git 索引中移除文件。
要刪除特定文件:
git rm path/to/filename.ext
需要注意的是,此命令會從您的文件系統(tǒng)中刪除文件。然而,已刪除文件的歷史記錄仍被 Git 跟蹤,所以如果您后來發(fā)現(xiàn)需要它,可以隨時找回。
git diff
git diff 命令用于顯示提交、分支以及其他代碼狀態(tài)之間的差異。默認情況下,git diff 顯示工作樹與暫存區(qū)之間的差異。
該命令還可用于比較分支之間的差異:
git diff branch1 branch2
或者用于比較兩個提交之間的差異:
git diff commitID1 commitID2
為了比較一個特定文件,也可以加上第三個文件名參數(shù):
git diff commitID1 commitID2 file_to_compare.ext
git reset
git reset 命令用于將分支恢復(fù)到先前的狀態(tài)。當(dāng)給出提交、分支或其他引用時,該命令將分支和 HEAD 引用移動到指向該引用的位置。如果未提供引用參數(shù),則默認將引用指向 HEAD。
該命令提供了三種操作模式:soft, mixed,和 hard。使用 soft 選項時,索引會被更新,但暫存的提交和工作目錄保持不變。使用 mixed 選項(默認選項)時,索引將被重置,已暫存的更改將被移回工作目錄。使用 hard 選項時,索引和工作目錄都會被重置,所有更改都將丟失。
要將暫存區(qū)重置為與最近的提交匹配,而不丟失工作區(qū)的任何數(shù)據(jù),請使用以下命令:
git reset
撤銷所有當(dāng)前的更改并將工作區(qū)重置為與最近的提交匹配,請使用以下命令:
git reset --hard
git tag
git tag 命令用于創(chuàng)建一個人類可讀的標簽(例如版本號),用于引用存儲庫中特定的提交。標簽在本質(zhì)上是一個引用,類似于分支名稱,但標簽通常是靜態(tài)的,因為它們指向單個提交,而分支名稱是動態(tài)的,因為它們跟蹤分支的末端,并隨著新的提交添加而更新。通常情況下,標簽在標記發(fā)布版本時很有用。
為當(dāng)前簽出的 Git 提交創(chuàng)建一個標記:
git tag tag_name
git rebase
Git rebase 命令允許用戶將一系列提交移動到一個新的基礎(chǔ)提交上。如果用戶提供了一個引用參數(shù),則該分支將在該分支上進行 rebase。否則,默認情況下,該分支將在遠程分支上進行 rebase。
git rebase origin
通過在 rebase 命令中添加 -i 選項,用戶可以執(zhí)行交互式 rebase。在交互式 rebase 中,用戶還可以組合、拆分、重新排序、刪除和編輯提交記錄。
git cherry-pick
git cherry-pick 命令接受一個或多個提交記錄,并將它們應(yīng)用到一個現(xiàn)有的分支上。該命令提供了一種快速將提交記錄添加到多個分支的方式,而無需執(zhí)行 rebase 操作。
要將單個提交記錄選取并應(yīng)用到當(dāng)前分支上,可以執(zhí)行以下操作:
git cherry-pick commitID
用戶也可以選取一系列提交記錄并將它們應(yīng)用到分支上。默認情況下,cherry-pick 不包含第一個提交記錄,但會包含最后一個提交記錄。
git cherry-pick oldest_commit...newest_commit
要讓 cherry-pick 命令包含第一個和最后一個提交記錄,可以將命令更新如下:
git cherry-pick oldest_commit^...newest_commit
git bisect
git bisect 命令用于通過對提交歷史記錄進行二分查找來分離出特定的提交記錄。該命令在幫助我們找出是哪個提交引入了 bug 時非常有用。
要運行這個命令,需要先找到一個問題未發(fā)生的過去提交記錄,這里稱之為 "good_commit_id"。然后在最近的分支上運行以下命令:
git bisect start
git bisect bad
git bisect good good_commit_id
Git 會對提交記錄進行二分查找,它會檢查當(dāng)前提交和上一個好的提交之間的提交記錄。此時,開發(fā)人員需要檢查或測試代碼,以確定 bug 是否仍然存在。如果 bug 仍然存在,則運行 git bisect bad 命令;如果 bug 不存在,則運行 git bisect good 命令。
一旦找到了引入 bug 的提交記錄,搜索就會返回第一個壞的提交記錄的 commit ID。從這里開始,用戶可以檢查引入 bug 的提交記錄。然后可以使用 git bisect reset 命令將分支恢復(fù)到執(zhí)行搜索之前的狀態(tài)。
這為開發(fā)人員快速追蹤 bug 的源頭提供了一種方法,因為每次將提交歷史記錄分成兩半,可以指數(shù)級地減少需要手動檢查的提交記錄數(shù)量。
git revert
git revert 命令用于撤消之前提交的更改。該命令接受一個 commit ID,然后在當(dāng)前分支上創(chuàng)建一個新的提交記錄,以反轉(zhuǎn) revert 提交記錄中的更改。這種方法允許用戶撤消一個更改,而無需重寫歷史記錄。執(zhí)行該命令將在分支的末尾產(chǎn)生一個新的提交記錄,用于撤消 revert 的提交記錄中的更改。
git revert commitID
git fetch
git fetch 命令用于從遠程倉庫下載引用(包括標簽和分支)。它會下載新創(chuàng)建的引用,并完成本地已存儲引用的歷史記錄。與 git pull 不同,git fetch 命令不會更新本地倉庫的工作狀態(tài),也不會執(zhí)行合并操作。默認情況下,git fetch 命令會獲取當(dāng)前倉庫的所有引用。
要從遠程倉庫獲取所有引用,請使用以下命令:
git fetch origin
要從特定分支獲取引用,請使用以下命令:
git fetch origin branch_name
git blame
通過 git blame 命令,用戶可以查看文件中每一行最后一次修改的時間以及進行修改的責(zé)任人。該工具對于理解文件的歷史記錄非常有用,可以幫助用戶確定在代碼更改方面應(yīng)該向誰尋求問題或建議。
要查看特定文件的此信息,請使用以下命令:
git blame path/to/filename.ext
總結(jié)
雖然在使用 Git 的最基本級別時不需要這些中級命令,但它們可以幫助用戶提高使用 Git 的效率。它們提供了一組強大的功能,可以幫助您成為一個全面發(fā)展的開發(fā)者,這通常意味著能夠以創(chuàng)造性的方式解決問題。
本文譯自:Git Cheat Sheet: 12 Essential Git Commands For Intermediate Users
原文鏈接:https://initialcommit.com/blog/git-cheat-sheet-intermediate