Git——功能——stash

  stash類似於數據結構的棧區,主要應用場景是當想切換分支時,工作目錄是髒的(即有修改,還未提交),此時可以臨時存儲在棧區中,之後分支切換回來,在恢復爲之前的工作空間。

  注:臨時存儲的棧區容易被遺忘,所以創建時指定message選項。

  棧區的操作有:元素的增,刪,查。棧區的清空。

  官網鏈接:https://git-scm.com/docs/git-stash,或者在本地輸入git stash --help。

1、元素

  增,刪,改,查

 1.1  保存

  執行git stash命令或git stash save命令會存儲元素。它的語法格式如下:

git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
          [-u|--include-untracked] [-a|--all] [-m|--message <message>]
             [--pathspec-from-file=<file> [--pathspec-file-nul]]
             [--] [<pathspec>…]]

  顯示的結果如下:

$ git stash 
saved working directory and index state WIP on master: cf58f6f 解決dev分支合併到master分支的衝突

  冒號之前的部分爲固定的字符串,表示stash存儲了工作目錄和索引中變更。冒號後面的部分爲參照版本庫對應的Commit信息,ID,msg。

  WIP全稱爲work in progress,指進行中的工作

  選項:

  -q,quiet, -p patch, -pathspec-from-file, -pathspec-from-nul, -pathspec是公共的選項

  -m:stash的操作日誌信息。

  文件類型有三種,被忽略的,未追蹤的,已追蹤的。

  -a:包含所有的文件,包括被忽略的文件。

  -u:包含未追蹤的文件。

  -k:不緩存已經暫存的內容

  1.2  查看

  執行git stash show查看單個元素,它的語法格式爲:

git stash show [<options>] [<stash>]

  stash標識,執行git stash show stash@{0}的結果如下:

A.txt | 1 +
 1 file changed, 1 insertion(+)

  顯示的結果與git diff --cached差不多,是索引與當前提交對象比較之後的變更集。

 1.3  取出

  執行git stash pop或apply恢復工作目錄和INDEX。pop與apply的區別在於pop會取出棧頂的元素並刪除,apply只取出棧頂的元素。

  -q || quiet:不打印任何日誌信息。

  <stash>:stash的標識,例如stashh@{0},它由三部分組成,stash,@,{number},其中number類似於棧的索引。

  執行git stash apply,之後查詢git stash list,會發現stash@{0}還在。執行git stash pop,之後查詢git stash list,stash@{0}已被刪除。

 1.4  刪除

  執行git stash drop移除棧中的元素,它的語法格式爲:

git stash drop [-q|--quiet] [<stash>]

  -q | quiet選項不打印任何輸出內容。

  stash爲元素的標識

2、棧區

  查看,清空。

 2.1  查詢

  git stash list的命令格式爲

git stash list [<options>]

  它用於查詢stash中的內容,可以把stash理解爲棧,git stash list查詢棧中所有元素。顯示的結果如下:

stash@{0}: WIP on master: 67402fc 提交文件A.txt

 2.2  清空

  執行git stash clear清空棧。它沒有任何選項

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章