7大Git實用技巧和命令總結
Git diff
通常情況下,我們會在自己的獨立分支中完成需求開發,此時就會有需求將自己的分支和其他分支進行對比。這個功能可以透過
git diff branch1 branch
命令來實現。
如果希望對比暫存區和當前的 HEAD,那麼使用
git diff --cached
命令會非常方便。普通的git diff命令預設對比的是沒有加到索引中的檔案。
恢復暫存區
如果已經將一些檔案新增到暫存區後又後悔了,Git 提供了多個命令來實現這個功能,具體需要根據當時情況而定。
git rm path/to/file --cached
這個命令將檔案從暫存區索引中刪除,但是仍然會將檔案保留在工作目錄。這比直接使用
git rm file -f
完全刪除檔案會安全一點。
Git reset
如果希望恢復一些已經提交的改動,我們可以使用
git reset
這個命令可以完成許多不同的行為,因此需要按照實際場景進行使用。
如果希望去除所有修改,包括索引中的內容和工作目錄中的修改,那麼可以使用
git reset --hard
如果僅僅是希望重置索引,那麼可以使用
git reset --mixed
這也是git reset命令的預設行為。混合的重置會保留當前工作目錄中的改動。最後,如果僅僅希望修改 分 支的 HEAD,可以透過
git reset --soft
來實現。
當執行git reset命令的時候,我們可以指定多個目標檔案作為引數傳入。當然可以透過
git reset --hard COMMIT_ID
恢復到指定的提交版本。
Git stash
大家應該對git stash命令並不陌生,它可以透過git stash pop命令方便的將之前的改動恢復回來。然而,如果工作目錄中有未追蹤的檔案,預設情況下是不會將其存入臨時儲藏區的。為了能夠臨時儲存未追蹤的檔案,可以使用
git stash --include-untracked
另外一個非常有用的命令是
git stash list
它能列出臨時儲藏區中的內容。
歷史記錄
Git 自帶了非常強大的工具來檢視專案以及特定檔案的變更情況。我個人非常喜歡用其中的一個命令:
git log --graph --decorate --oneline
它可以用於展示經過修飾的提交歷史。這個命令非常冗長,因此我建議可以為它建立一個別名(這可能是所有技巧中最有用的,因為許多命令都比較難記)。git log 命令可以顯示 HEAD、所有提交的 ID 以及分支資訊。有了這些資訊之後,我們可以使用
git show COMMIT_ID/HEAD/BRANCH
來顯示更詳細的資訊。
有的時候我們需要了解誰對一個檔案做了哪些改動,這正是
git blame path/to/file
這個命令所提供的功能。
之前提到過git diff命令,它也是一個檢視歷史的工具。例如,如果需要對比當前 HEAD 和前兩個提交,可以使用
git diff HEAD HEAD~2
為了能夠展示每個提交中更詳細的更新資訊,可以使用
git log --patch
如果只想要看包含關鍵字“apple”的提交,使用
git log --grep apples --oneline
要檢視歷史提交記錄中兩個點之間的提交歷史,我們可以用
git log HEAD~5..HEAD^ --oneline
對於分支可以使用
git log branch_name..master --oneline
修復錯誤提交
注意:以下一些命令會修改提交歷史,使用前請確保瞭解後再執行。
當提交出錯時,我們可能會希望能夠修改提交歷史。我不建議修改已經推送到遠端倉庫的提交歷史(即使 git 允許這樣做),但是對於本地倉庫的提交歷史,我個人認為還是可以修改的。透過
git commit --amend
可以刪除前一次提交,並建立一個新的提交記錄以替代之前的提交。
另一個我很喜歡的 git 使用技巧是互動式變基 (rebase)。它可以用來編輯提交資訊,或者將多個提交壓縮成一個提交,這也是我最喜歡的一個功能。為了在遠端倉庫 origin 的 master 分支之後的所有提交上執行互動式變基,可以使用
git rebase -i origin/master
這個命令會顯示提交列表和可執行操作的詳細描述。例如以下操作將會把多個提交壓縮成一個:
1 pick 80f2a48 Add feature X
2 squash 2c74ea2 Add junit tests for feature X
3 squash 4k81nm5 Bugfix for feature X
最終的結果會是生成一個提交訊息為“Add feature X”的提交。
如果需要恢復一個有問題的提交,我們可以使用
git revert COMMIT_ID
該命令會建立一個新的提交,讓當前專案狀態恢復到指定提交之前。
如果我們在修復問題時出現了誤操作,例如不小心刪除了不應該刪除的檔案。我們還是可以從版本庫中恢復回來,因為 git 儲存了所有修改的版本,包括被移除的提交。git reflog命令就是用來實現這個功能的。
挑揀提交(cherry-pick)
假設我們和同事在各自單獨的分支上進行開發,同事有一個重要的提交我們也想應用到自己的分支上來,但是不需要對方分支的其他提交。這時我們可以使用
git cherry-pick COMMIT_ID
後記
以上都是我最喜歡的 git 實用技巧。希望你也能從中學到一些新知識。這些都是我在日常使用中發現的非常有用的命令,它們對我的日常工作非常有用。如果你也有類似常用的 git 實用技巧或者常用命令,可以分享出來大家一起交流。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69902763/viewspace-2637892/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Git實戰命令總結Git
- Git常用命令總結(超實用)Git
- git命令總結Git
- 常用git命令總結Git
- ffmpeg 命令列實用總結命令列
- CSS揭祕實用技巧總結CSS
- Git常用命令總結Git
- 6 條 Git 實用技巧Git
- git status 命令總結 —— Git 學習筆記 06Git筆記
- 初中高階的 git 和 gerrit 技巧【大型專案實戰總結 && CR 經驗】Git
- linux實用命令以及實用場景總結Linux
- Git命令彙總Git
- git 命令彙總Git
- Git 小技巧彙總Git
- Vue的使用總結和技巧Vue
- Git常用命令(超實用)Git
- 一些 實用的 git 小技巧Git
- 【Git】git常用命令彙總Git
- Git 常用命令總結,將會持續更新Git
- Git超實用總結,再也不怕記憶力不好了Git
- 轉:Git 總結Git
- Git 使用總結Git
- 生信小技巧:實用的命令(3)
- gulp技巧總結
- Jenkins 指令碼命令列應用總結Jenkins指令碼命令列
- Vue最佳實踐和實用技巧Vue
- 6個超實用的Sudo命令使用技巧
- ?Git 常用操作總結Git
- MySQL啟動和關閉命令總結MySql
- Git常用命令總結及一些問題思考Git
- Linux命令總結--mkdir命令Linux
- Git實用命令指南Git
- PyCharm 實用使用總結PyCharm
- CSS技巧總結2CSS
- 面試技巧總結面試
- VIM 命令總結
- adb命令總結
- NPM 命令總結NPM