一、Git Stash是什麼?
Git stash是一個非常有用的命令,它可以讓你“儲藏”當前的工作,並且自動切換到乾淨的工作目錄。這個功能通常用於臨時存儲你的工作,以便你可以在切換分支或者處理其他問題時,隨時返回到原來的狀態。它可以保存未提交的代碼,包括修改、暫存和未跟蹤的文件。
二、如何使用Git Stash儲藏?
使用“git stash”命令可以將所有未提交的修改(包括已暫存和未暫存的修改)保存到一個“儲藏”中。
$ git stash
Saved working directory and index state WIP on master: 53c09c3 added the index file
HEAD is now at 53c09c3 added the index file
我們可以使用“git stash list”命令列出所有的儲藏:
$ git stash list
stash@{0}: WIP on master: 53c09c3 added the index file
我們可以使用“git stash apply”命令,將儲藏中的修改應用到當前分支,相當於恢復了之前被暫存的代碼。我們也可以指定儲藏的ID號來應用某個特定的儲藏。如果不指定ID號,則默認使用最新的儲藏來恢復。
$ git stash apply
# 等價於
$ git stash apply stash@{0}
如果你不想保留儲藏,可以使用“git stash drop”命令。如果你希望應用一個儲藏並且將其從列表中刪除,可以使用“git stash pop”命令。
$ git stash drop stash@{0}
# 或者
$ git stash pop
三、如何使用Git Stash恢復被清理的Stash?
有時候我們可能會意外清理掉了自己儲藏的內容,這時候我們需要用到另一個命令“git fsck”來檢查是否有文件被清理過。在執行該命令之前,需要確定儲藏遺失的提交ID。
$ git fsck --full --no-reflog
然後你應該看到一個類似下面這樣的輸出:
Checking object directories: 100% (256/256), done.
Checking objects: 100% (392/392), done.
broken link from tree d2de8bf97b21f2e74251e0a8facfbe7d9d4c3e5e
to blob 2fdea27ad5c5a54f0520d8e78621b1c9054cb5a9
broken link from tree 49fa1ad36b6e0a31b4c82015f9b4c59675aad2c2
to blob 2fdea27ad5c5a54f0520d8e78621b1c9054cb5a9
dangling commit ed961247cb59473b5ad7e0993f21da5f3b294de3
dangling commit 6d0153cd180afe4d5769c59acd176a2f72a187c7
這裡的“dangling commit”中包括儲藏的提交內容。我們可以使用“git show”命令來查看這個提交的詳細信息:
$ git show ed961247cb59473b5ad7e0993f21da5f3b294de3
輸出的信息中應該包括你想要恢復的內容。然後,我們可以使用“git cherry-pick”命令將這個提交應用到工作目錄中:
$ git cherry-pick ed961247cb59473b5ad7e0993f21da5f3b294de3
四、如何使用Git Stash恢復未保存的修改?
有時我們可能會在工作目錄中進行了一些修改但是並沒有執行任何提交操作,這時候可以使用以下命令將這些修改儲藏起來,以備後續恢復使用:
$ git stash save "message"
然後,我們可以使用“git stash list”命令查看所有的儲藏列表:
$ git stash list
現在我們可以使用“git stash apply”命令來恢復儲藏的內容:
$ git stash apply
# 或者應用某個特定的儲藏
$ git stash apply stash@{2}
之後,我們可以繼續在工作目錄中進行修改或者提交操作。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/237714.html