分享Git常用7大技巧和命令
Git 是一個(gè)非常強(qiáng)大的工具,它包含豐富的工具用以維護(hù)項(xiàng)目。本文介紹了一些 Git 日常使用過(guò)程中的實(shí)用技巧和命令,希望這些內(nèi)容能夠?qū)Υ蠹矣兴鶐椭?/p>
一、Git diff比對(duì)命令
通常情況下,我們會(huì)在自己的獨(dú)立分支中完成需求開(kāi)發(fā),此時(shí)就會(huì)有需求將自己的分支和其他分支進(jìn)行對(duì)比。這個(gè)功能可以通過(guò)
git diff branch1 branch
命令來(lái)實(shí)現(xiàn)。
如果希望對(duì)比暫存區(qū)和當(dāng)前的 HEAD,那么使用
git diff --cached
命令會(huì)非常方便。普通的git diff命令默認(rèn)對(duì)比的是沒(méi)有加到索引中的文件。
二、Git恢復(fù)暫存區(qū)命令
如果已經(jīng)將一些文件添加到暫存區(qū)后又后悔了,Git 提供了多個(gè)命令來(lái)實(shí)現(xiàn)這個(gè)功能,具體需要根據(jù)當(dāng)時(shí)情況而定。
git rm path/to/file --cached
這個(gè)命令將文件從暫存區(qū)索引中刪除,但是仍然會(huì)將文件保留在工作目錄。這比直接使用
git rm file -f
完全刪除文件會(huì)安全一點(diǎn)。
三、Git reset恢復(fù)改動(dòng)命令
如果希望恢復(fù)一些已經(jīng)提交的改動(dòng),我們可以使用
git reset
這個(gè)命令可以完成許多不同的行為,因此需要按照實(shí)際場(chǎng)景進(jìn)行使用。
如果希望去除所有修改,包括索引中的內(nèi)容和工作目錄中的修改,那么可以使用
git reset --hard
如果僅僅是希望重置索引,那么可以使用
git reset --mixed
這也是git reset命令的默認(rèn)行為?;旌系闹刂脮?huì)保留當(dāng)前工作目錄中的改動(dòng)。最后,如果僅僅希望修改分支的 HEAD,可以通過(guò)
git reset --soft
來(lái)實(shí)現(xiàn)。
當(dāng)運(yùn)行git reset命令的時(shí)候,我們可以指定多個(gè)目標(biāo)文件作為參數(shù)傳入。當(dāng)然可以通過(guò)
git reset --hard COMMIT_ID
恢復(fù)到指定的提交版本。
四、Git stash
大家應(yīng)該對(duì)git stash命令并不陌生,它可以通過(guò)git stash pop命令方便的將之前的改動(dòng)恢復(fù)回來(lái)。然而,如果工作目錄中有未追蹤的文件,默認(rèn)情況下是不會(huì)將其存入臨時(shí)儲(chǔ)藏區(qū)的。為了能夠臨時(shí)保存未追蹤的文件,可以使用
git stash --include-untracked
另外一個(gè)非常有用的命令是
git stash list
它能列出臨時(shí)儲(chǔ)藏區(qū)中的內(nèi)容。
五、Git查看歷史記錄
Git 自帶了非常強(qiáng)大的工具來(lái)查看項(xiàng)目以及特定文件的變更情況。我個(gè)人非常喜歡用其中的一個(gè)命令:
git log --graph --decorate --oneline
它可以用于展示經(jīng)過(guò)修飾的提交歷史。這個(gè)命令非常冗長(zhǎng),因此我建議可以為它創(chuàng)建一個(gè)別名(這可能是所有技巧中最有用的,因?yàn)樵S多命令都比較難記)。git log 命令可以顯示 HEAD、所有提交的 ID 以及分支信息。有了這些信息之后,我們可以使用
git show COMMIT_ID/HEAD/BRANCH
來(lái)顯示更詳細(xì)的信息。
有的時(shí)候我們需要了解誰(shuí)對(duì)一個(gè)文件做了哪些改動(dòng),這正是
git blame path/to/file
這個(gè)命令所提供的功能。
之前提到過(guò)git diff命令,它也是一個(gè)查看歷史的工具。例如,如果需要對(duì)比當(dāng)前 HEAD 和前兩個(gè)提交,可以使用
git diff HEAD HEAD~2
為了能夠展示每個(gè)提交中更詳細(xì)的更新信息,可以使用
git log --patch
如果只想要看包含關(guān)鍵字“apple”的提交,使用
git log --grep apples --oneline
要查看歷史提交記錄中兩個(gè)點(diǎn)之間的提交歷史,我們可以用
git log HEAD~5..HEAD^ --oneline
對(duì)于分支可以使用
git log branch_name..master --oneline
六、Git恢復(fù)錯(cuò)誤提交命令
注意:以下一些命令會(huì)修改提交歷史,使用前請(qǐng)確保了解后再執(zhí)行。
當(dāng)提交出錯(cuò)時(shí),我們可能會(huì)希望能夠修改提交歷史。我不建議修改已經(jīng)推送到遠(yuǎn)程倉(cāng)庫(kù)的提交歷史(即使 git 允許這樣做),但是對(duì)于本地倉(cāng)庫(kù)的提交歷史,我個(gè)人認(rèn)為還是可以修改的。通過(guò)
git commit --amend
可以刪除前一次提交,并創(chuàng)建一個(gè)新的提交記錄以替代之前的提交。
另一個(gè)我很喜歡的 git 使用技巧是交互式變基 (rebase)。它可以用來(lái)編輯提交信息,或者將多個(gè)提交壓縮成一個(gè)提交,這也是我最喜歡的一個(gè)功能。為了在遠(yuǎn)程倉(cāng)庫(kù) origin 的 master 分支之后的所有提交上執(zhí)行交互式變基,可以使用
git rebase -i origin/master
這個(gè)命令會(huì)顯示提交列表和可執(zhí)行操作的詳細(xì)描述。例如以下操作將會(huì)把多個(gè)提交壓縮成一個(gè):
1 pick 80f2a48 Add feature X 2 squash 2c74ea2 Add junit tests for feature X 3 squash 4k81nm5 Bugfix for feature X
最終的結(jié)果會(huì)是生成一個(gè)提交消息為“Add feature X”的提交。
如果需要恢復(fù)一個(gè)有問(wèn)題的提交,我們可以使用
git revert COMMIT_ID
該命令會(huì)創(chuàng)建一個(gè)新的提交,讓當(dāng)前項(xiàng)目狀態(tài)恢復(fù)到指定提交之前。
如果我們?cè)谛迯?fù)問(wèn)題時(shí)出現(xiàn)了誤操作,例如不小心刪除了不應(yīng)該刪除的文件。我們還是可以從版本庫(kù)中恢復(fù)回來(lái),因?yàn)?git 保存了所有修改的版本,包括被移除的提交。git reflog命令就是用來(lái)實(shí)現(xiàn)這個(gè)功能的。
七、Git挑揀提交(cherry-pick)
假設(shè)我們和同事在各自單獨(dú)的分支上進(jìn)行開(kāi)發(fā),同事有一個(gè)重要的提交我們也想應(yīng)用到自己的分支上來(lái),但是不需要對(duì)方分支的其他提交。這時(shí)我們可以使用
git cherry-pick COMMIT_ID
以上七個(gè)命令是我們?nèi)粘9ぷ髦薪?jīng)常用到的命令,Git還有很多方便好用的命令我們會(huì)繼續(xù)分享給大家,希望對(duì)大家有所幫助,下面的鏈接是其它有關(guān)Git的使用方法有興趣的可以詳細(xì)閱讀
相關(guān)文章
uniApp微信小程序使用騰訊地圖定位功能及getLocation需要在app.json中聲明permission字段問(wèn)
這篇文章主要介紹了uniApp微信小程序使用騰訊地圖定位功能及getLocation需要在app.json中聲明permission字段問(wèn)題解決,需要的朋友可以參考下2022-12-12
vant/vue實(shí)現(xiàn)小程序下拉刷新功能方法詳解
這篇文章主要介紹了vant/vue實(shí)現(xiàn)小程序下拉刷新功能方法詳解,需要的朋友可以參考下2022-12-12
Windows系統(tǒng)安裝使用Git的詳細(xì)教程
這篇文章主要介紹了Windows系統(tǒng)安裝使用Git的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
nasm實(shí)現(xiàn)的用vmware運(yùn)行自做的linux啟動(dòng)盤的引導(dǎo)代碼
這個(gè)小的代碼的編寫(xiě)和運(yùn)行還是能讓自己對(duì)系統(tǒng)啟動(dòng)有一個(gè)更深的認(rèn)識(shí),不過(guò)有個(gè)不懂的就是怎么用ISO鏡像文件啟動(dòng),怎么將引導(dǎo)代碼寫(xiě)入ISO鏡像文件,依然沒(méi)有找到很好的方法解決2013-04-04
詳解windows 環(huán)境下搭建electricSearch+kibana
這篇文章主要介紹了windows 環(huán)境下搭建electricSearch+kibana,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05
K8S二進(jìn)制部署的K8S(1.15)部署hpa功能
這篇文章主要介紹了K8S二進(jìn)制部署的K8S(1.15)部署hpa功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
好玩又實(shí)用的查看函數(shù)圖像網(wǎng)站Desmos
這個(gè)網(wǎng)站的最大優(yōu)點(diǎn),就是省去了安裝數(shù)學(xué)繪圖軟件或計(jì)算軟件的麻煩,只要打開(kāi)瀏覽器就能使用了??戳私榻B之后,可別忘了把這個(gè)好網(wǎng)站加到書(shū)簽2021-08-08

