揭秘Git高手的10個秘密武器:讓你的工作效率飆升!

張哥說技術發表於2023-11-30

來源:程式新視界

揭秘Git高手的10個秘密武器:讓你的工作效率飆升!

Git和GitHub是每個軟體工程師都必須瞭解的最基本的工具。它們是開發人員日常工作不可或缺的一部分,每天都要與之互動。

精通Git不僅能簡化你的日常操作,還能顯著提高生產力。在這篇文章中,我們將探討一組能夠極大提升生產力的命令。

隨著對這些命令越來越熟練的運用,會節省大量的時間,成為一個更高效的軟體工程師。

Git 術語

在逐一深入探討Git命令之前,我們先來熟悉一些基本的Git術語。這不僅有助於更好地理解這些命令,而且在本文後續的部分使用這些術語時,也能避免混淆。

HEAD

在Git中,HEAD是一個特殊的指標/引用,始終指向當前分支中的最新提交。當你進行新的提交時,HEAD會向前移動,指向那個新的提交。例如,如果你處於main分支,並進行了新的提交,HEAD現在將指向那個新的提交,表明它是main分支中最新的提交。

^(尖角符號):

在Git中,^符號用作導航穿越專案歷史時間線的手段。當你使用HEAD^時,它引用的是你當前提交之前的提交。如果你在^後面追加一個數字,比如HEAD^2,它指的是當前提交之前的第二個提交。簡而言之,^符號允許你在專案的歷史中向後遍歷,而數字值讓你能夠精確地確定你希望回退的提交數量。

暫存(Staging)

暫存是你組裝下一個提交中想要包含的更改的地方。暫存讓你能夠仔細策劃你的提交,使其易於審查、組織和完善你的修改。有了暫存,你可以控制哪些更改包含在你的提交中。要暫存更改,你使用git add命令,這類似於宣告“我希望這些更改成為我的下一個提交的一部分”。

現在,讓我們逐一探索這10個Git命令。

1、同時新增和提交檔案

通常,在Git中,我們使用git add *命令來暫存所有已修改的檔案以備後續提交。之後,使用git commit -m "commitMessage"命令來提交這些更改。然而,存在一個更加高效的命令可以一步完成這兩個任務:

git commit -am "commitMessage"

-am標誌不僅允許我們暫存這些更改,而且還能在一個高效的操作中提交它們。

2、建立並切換到一個Git分支

與前面的場景類似,另一個命令也結合了兩個命令的功能。不是使用兩個分開的命令,一個是git branch branchName來建立分支,然後是git checkout branchName來切換到它。

可以使用以下命令在一個步驟中完成這兩個任務:

git checkout -b branchName

-b標誌和git checkout命令一起使用,不僅允許我們建立一個新的分支,還能立即切換到它。

3、刪除一個Git分支

要在Git中刪除一個分支,可以使用git branch -d或者git branch -D命令。-d選項是安全刪除,它只會在該分支已經完全合併到當前分支時才刪除它。-D選項是強制刪除,無論該分支是否已經完全合併都會刪除它。以下是命令。

安全刪除(檢查合併):

git branch -d branchName

強制刪除(不檢查合併):

git branch -D branchName

4、重新命名一個Git分支

要重新命名一個分支,可以使用git branch -m命令,後面跟著當前分支名和新的期望分支名。例如,如果你想把一個叫做oldBranch的分支重新命名為newBranch,執行以下命令:

git branch -m oldBranch newBranch

然而,如果你想重新命名現在正工作的當前分支,而不顯式指定舊名稱,可以使用以下命令:

git branch -m newBranchName

這裡,你不需要指定舊的分支名,因為Git會假設你想將當前分支重新命名為新的名稱。

5、取消暫存特定檔案

有時,可能想要從暫存區中移除特定的檔案,以便在提交前進行額外的修改。使用:

git reset filename

這將取消該檔案的暫存狀態,同時保持你的更改不變。

6、丟棄對特定檔案的更改

如果你想完全放棄對特定檔案所作的更改,並將其恢復到最後一次提交的狀態,使用:

git checkout -- filename

這個命令確保檔案回到它之前的狀態,撤銷任何最近的修改。它是一種在不影響其他更改的情況下重新開始編輯特定檔案的有用方式。

7、更新你的最後一次 Git 提交

想象一下,你剛剛在Git倉庫中做了一個提交,但隨後你意識到你忘記在那次提交中包含一個更改,或者你可能想要修正提交資訊本身。你不想為這個小改動建立一個全新的提交。相反,你想要把它新增到之前的提交中。這時可以使用的命令:

git commit --amend -m 'message'

這個命令修改了你最近做的提交。它將任何已暫存的更改(你已經用git add新增的)和你的新評論結合起來建立一個更新的提交。

需要記住的一點是,如果你已經將提交推送到遠端倉庫,你需要使用 git push --force 來強制推送更改以更新遠端分支。因為標準的git push操作是將一個新的提交追加到你的遠端倉庫,而不是修改最後的提交。

8、暫存更改

想象你正在同時在兩個不同的分支上工作,A和B。當你在分支A上做更改時,你的團隊要求你在分支B中修復一個bug。當你嘗試使用git checkout B切換到分支B時,Git阻止了這個操作,並顯示了一個錯誤:揭秘Git高手的10個秘密武器:讓你的工作效率飆升!我們可以按照錯誤訊息的建議提交更改。但提交更像是一個固定的時間點,並不是一個正在進行中的工作。這時可以應用錯誤訊息的第二個建議並使用暫存功能的地方。我們可以使用這個命令來暫存更改:

git stash

git stash臨時儲存你還沒準備好提交的更改,允許你切換分支或者在不提交未完成工作的情況下進行其他任務。

要在我們的分支中重新應用暫存的更改,你可以使用git stash apply或者git stash pop。這兩個命令都恢復最新暫存的更改。應用暫存只是恢復更改,而彈出暫存則是恢復更改並將其從暫存中移除。

9、還原Git提交

想象你正在一個Git專案上工作,發現一個特定的提交引入了一些不希望的更改。你需要撤銷這些更改,但又不想從歷史記錄中擦除該提交。你可以使用以下命令來撤銷那個特定的提交:

git revert commitHash

這是一種安全且非破壞性的方式來糾正你的專案中的錯誤或不想要的修改。例如,假設你有一系列的提交:

  • 提交 A
  • 提交 B(這裡引入了不希望的更改)
  • 提交 C
  • 提交 D

為了逆轉提交B的影響,執行如下命令:

git revert commitHashOfB

Git將會建立一個新的提交,我們稱之為提交E,它將抵消提交B引入的更改。提交E成為你分支中的最新提交,專案現在反映的狀態就像提交B從未發生過一樣。

如果你想知道如何檢索提交雜湊值,使用git reflog是直接的。在下面的截圖中,高亮的部分代表你可以輕鬆複製的提交雜湊值:揭秘Git高手的10個秘密武器:讓你的工作效率飆升!

10、重置Git提交

假設你對專案進行了提交。然而,在檢查後,你意識到需要調整或完全撤銷最後一次提交。對於這種情況,Git提供了這些強大的命令。

軟重置:

git reset --soft HEAD^

當使用git reset --soft HEAD^時,執行一個軟重置。這個命令允許回溯到最後一次提交,同時保留所有更改在暫存區中。簡單來說,可以使用這個命令輕鬆地撤銷提交,同時保留你的程式碼更改。當需要修改最後的提交,也許是在再次提交之前新增更多更改時,這很方便。

混合重置:

git reset --mixed HEAD^

這是當你不指定--soft--hard時使用git reset HEAD^的預設行為。它撤銷了最後的提交,並從暫存區中移除了它的更改。然而,它會保留這些更改在工作目錄中。當你想要撤銷最後的提交併從頭開始進行更改,同時在重新提交之前保持更改在工作目錄中時,這很有幫助。

硬重置:

git reset --hard HEAD^

現在,來看看git reset --hard HEAD^。它會徹底抹除最後的提交以及所有相關更改從你的Git歷史記錄中。當你使用--hard標誌時,就沒有回頭路了。所以在你想要永久性地丟棄最後的提交及其所有更改時,一定要非常謹慎地使用。

小結

希望這篇文章對你有所幫助,可以學到了一些新的Git命令。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024923/viewspace-2998109/,如需轉載,請註明出處,否則將追究法律責任。

相關文章