關於 Git 儲藏工具的小知識分享

前言

這篇博客目測對不用 git 命令行的同窗可能幫助不大。可是筆者本人長期使用 git 中開發維護項目。仍是感受命令行十分便利。所以,如下呢其實是個人筆記~git

咱們假設,當咱們正在進行項目中某一部分的工做開發,裏面的東西處於一個比較雜亂的狀態,此時咱們須要切換分支,可是此時咱們並不想提交正在進行一半的的工做內容。此時怎麼辦呢?bash

此時解決這個問題的辦法就是使用 git stash 命令。app

基礎使用

儲藏變動ui

$ git stash

Saved working directory and index state WIP on master: 39a3ecf init
複製代碼

查看全部儲藏spa

$ git stash list

stash@{0}: WIP on master: 39a3ecf init
複製代碼

備註: WIP 其實就是 Work In Progress 的縮寫。命令行

查看某個儲藏的內容code

$ git stash show stash@{0}
複製代碼

應用最近的一個儲藏索引

$ git stash apply
複製代碼

應用指定的一個儲藏開發

$ git stash apply stash@{0}
複製代碼

起個名字

咱們會發現以上 git 默認給的索引名字並不友好,時間久了說不定咱們就忘了這個儲藏是什麼內容了。文檔

$ git stash save "WIP: I name stash, yeah"
複製代碼

這時候咱們再查看儲藏列表

$ git stash list

stash@{0}: On master: WIP: I name stash, yeah
stash@{1}: WIP on master: 39a3ecf init
複製代碼

會發現提示內容的確友好不少了~

存儲未追蹤的文件

通常來講,好比咱們新增了 b.txt,git stash 是不會進行儲藏的。

$ git status

On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

	b.txt

nothing added to commit but untracked files present (use "git add" to track)
複製代碼

嘗試儲藏,發現毫無反應!

$ git stash

No local changes to save
複製代碼

可是咱們只要加上 --include-untracked 標識符便可

$ git stash --include-untracked
複製代碼

或者簡寫以下:

$ git stash -u
複製代碼

應用與清理

清除最近的儲藏同時並應用(應用儲藏,同時馬上將該儲藏從堆棧中移走),通常比較經常使用這個命令,但若是不想清除該儲藏,可使用上述提過的 git stash apply 命令。

$ git stash pop
複製代碼

清除最近的儲藏

$ git stash drop
複製代碼

清除第 n 個儲藏

$ git stash drop stash@{n}
複製代碼

清除全部儲藏

$ git stash clear
複製代碼

從儲藏中建立分支

使用方法:git stash branch <branchname> [<stash>]

這個命令會建立一個新的分支,檢出你儲藏工做時的所處的提交,從新應用你的工做,若是成功,將會丟棄儲藏。

$ git stash branch example
複製代碼

這個命令至關實用!能夠恢復儲藏的工做而後在新的分支上繼續當時的工做。

小結

最後若是困惑,可查閱官方文檔或者手動敲入如下命令~

$ git stash --help
複製代碼

以上,對你們若有助益,不勝榮幸~

相關文章
相關標籤/搜索