Git和GitHub是每個軟件工程師必須了解的最基礎的東西,開發(fā)人員的日常工作中都要與這些工具進行交互。精通Git可以簡化工作,極大提高生產力。
本文,我們分享一組開發(fā)者必知的Git命令。
先熟悉一些基本的Git術語。這能夠幫助更好地理解Git命令。
在Git中,HEAD是個特殊的指針/引用,它始終指向當前分支中最新的提交。當您進行新的提交時,HEAD會向前移動,指向該新的提交。例如,如果在main分支上進行了新的提交,HEAD將指向該新的提交,表示它是main分支中最新的提交。
在Git中,符號^用于導航項目的歷史時間線。當使用HEAD^時,它引用的是當前提交之前的提交。如果在^后附加一個數字,例如HEAD^2,它引用的是當前提交之前的第二個提交。簡而言之,^符號允許在項目歷史中向后遍歷,而數字值則可以精確指定要回溯的提交數量。
暫存區(qū)是用來存放開發(fā)人員希望在下一次提交中包含的更改的地方。暫存區(qū)可以選擇要提交的內容,審查、組織和完善您的修改。通過使用暫存區(qū),可以控制哪些更改將被包含在提交中。當使用git add命令時,實際上是將更改添加到暫存區(qū),可以類比為聲明:“我希望這些更改成為我下一次提交的一部分。”
現在逐個介紹10個Git命令。
通常,在Git中,使用git add *命令將所有修改過的文件放入暫存區(qū),然后使用git commit -m "commitMessage"命令提交這些更改。然而,有一種更簡化的命令,可以在一個步驟中完成這兩個任務:
git commit -am "commitMessage"
-am標志允許開發(fā)人員在一個高效的操作中既將這些更改放入暫存區(qū),又進行提交。
與前面的情況類似,有另一條命令將這兩個命令的功能合并在一起。不需要使用兩個單獨的命令,git branch branchName用于創(chuàng)建一個分支,然后git checkout branchName用于切換到該分支,可以使用以下命令在一個步驟中完成這兩個任務:
git checkout -b branchName
帶有git checkout命令的-b標志允許開發(fā)人員不僅創(chuàng)建一個新分支,還立即切換到該分支。
要在Git中刪除一個分支,可以使用git branch -d或git branch -D命令。-d選項用于安全刪除,只有當該分支完全合并到當前分支時才會刪除該分支。-D選項用于強制刪除,無論該分支是否完全合并,都會刪除在Git中,以下是命令示例:
安全刪除(檢查合并情況):
git branch -d branchName
強制刪除(不檢查合并情況):
git branch -D branchName
要重命名一個分支,可以使用git branch -m命令,后面跟上當前分支名稱和新的目標分支名稱。例如,如果想將一個名為oldBranch的分支重命名為newBranch,可以運行以下命令:
git branch -m oldBranch newBranch
然而,如果想要重命名當前正在工作的分支,而不明確指定舊的名稱,可以使用以下命令:
git branch -m newBranchName
在這種情況下,無需指定舊的分支名稱,因為Git會假設您想將當前分支重命名為新的名稱。
有時,開發(fā)人員可能希望從暫存區(qū)中移除特定文件,以便在提交之前進行其他修改。使用以下命令:
git reset filename
這將取消暫存該文件,同時保留您的更改。
如果想要完全放棄對特定文件的更改,并將其恢復為上次提交的狀態(tài),請使用以下命令:
git checkout -- filename
該命令將確保文件返回到其以前的狀態(tài),撤消任何最近的修改。這是一種有用的方法,可以在不影響其他更改的情況下重新開始處理特定文件。
假設剛剛在Git倉庫中進行了一次提交,然后意識到您忘記在該提交中包含一個更改,或者想要修復提交消息本身。您不希望為這個小的更改創(chuàng)建一個全新的提交。相反,您想要將其添加到先前的提交中。這時可以使用以下命令的地方:
git commit --amend -m 'message'
該命令修改最近進行的提交。它將任何暫存的更改(使用git add添加的更改)與新的注釋結合起來,創(chuàng)建一個更新后的提交。
需要記住的是,如果您已經將提交推送到遠程倉庫,需要使用git push --force強制推送更改以更新遠程分支。因為標準的git push操作將一個新的提交附加到您的遠程倉庫,而不是修改最后的提交。
假設您正在兩個不同的分支A和B上進行工作。當在A分支上進行更改時,團隊要求您在B分支上修復一個錯誤。當嘗試使用git checkout B切換到B分支時,Git會阻止并顯示錯誤信息:
圖片
如果收到錯誤消息并建議提交更改,那么提交是一個固定點,會將更改記錄在項目的歷史中。但是,如果您仍然需要在當前工作中繼續(xù)進行其他修改,不想立即提交這些更改,那么可以使用"stash"功能來隱藏這些修改:
git stash
git stash會暫時保存尚未準備好提交的更改,允許切換分支或在其他任務上工作,而無需提交不完整的工作。
要在分支中重新應用已隱藏的更改,可以使用git stash apply或git stash pop。這兩個命令都會恢復最新的隱藏更改。stash apply僅僅恢復更改,而pop則恢復更改并將其從隱藏中移除。
想象一下,你正在一個 Git 項目上工作,然后發(fā)現某個提交引入了一些不良的改動。你希望撤銷這些改動,但又不想完全刪除該提交的歷史記錄。在這種情況下,可以使用以下命令來撤銷特定的提交:
git revert commitHash
這是一種安全且非破壞性的方式來糾正項目中的錯誤或不必要的修改。
舉個例子,假設你有一系列的提交:
要撤銷提交 B 的影響,運行:
git revert commitHashOfB
Git 會創(chuàng)建一個新的提交,我們稱之為提交 E,它會抵消提交 B 引入的改動。提交 E 成為你的分支中最新的提交,項目的狀態(tài)將回到提交B之前的狀態(tài)。
如果想知道如何獲取提交哈希值,可以使用 git reflog 命令。在下面的截圖中,被標記的部分表示你可以復制的提交哈希值:
圖片
假設你已經對項目進行了一次提交。然而,在檢查之后,你意識到需要調整或完全撤銷你最后一次的提交。針對這種情況,Git 提供了以下強大的命令:
git reset --soft HEAD^
當使用 git reset --soft HEAD^ 命令時,你進行了一次軟重置。這個命令將回退到上一次的提交,同時保留所有在暫存區(qū)中的修改。簡單來說,你可以輕松地取消提交,同時保留你的代碼修改。當需要修改上一次的提交,可能是為了再次提交之前添加更多的修改時,這個命令非常有用。
git reset --mixed HEAD^
當使用 git reset HEAD^ 命令而沒有指定 --soft 或者 --hard 參數時,它的行為會默認為混合重置。這種方式會撤銷上一次的提交,并從暫存區(qū)中刪除該提交的改動,但是會保留這些改動在工作目錄中。
這個命令非常有用,可以實現撤銷上一次的提交,并重新開始進行修改,同時保留工作目錄中的改動以便重新提交。
git reset --hard HEAD^
硬重置會徹底抹去最后一次提交以及與之相關的所有改動。使用 --hard 參數時,無法回退。所以當想要永久丟棄最后一次提交和它的所有改動時,請謹慎使用這個命令。
本文鏈接:http://www.www897cc.com/showinfo-26-17853-0.html10個開發(fā)者必知必會的Git命令
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 十個Python中的數據類型技巧
下一篇: 平臺工程團隊的架構和設計注意事項