git stash save與git stash push區別

admin發表於2018-08-01

首先強調一點,git stash save命令不被推薦使用,使用git stash push替代。

關於git stash基本用法可以參閱git stash用法詳解一章節。

標題中的兩個命令都可以儲存當前的修改,將工作區或者暫存區儲藏起來。

程式碼例項如下:

[Shell] 純文字檢視 複製程式碼
$ git stash push

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/01/002805li5vlna8neb5vn0n.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述程式碼完成了儲藏功能,使用$ git stash save命令同樣可以完成相同的任務。

但是兩者還是有所區別,下面做一下簡單介紹。

一.是否推薦使用:

(1).雖然當前網路大多使用git stash save為例,但是此命令已經不再推薦使用。

(2).當前推薦使用git stash push命令。

二.儲藏說明資訊的新增:

(1).使用git stash push命令,程式碼如下:

[Shell] 純文字檢視 複製程式碼
$ git stash push -m "螞蟻部落"

需要-m引數,是--message的縮寫,不能省略否則會報錯。

(2).使用git stash save命令,程式碼如下:

[Shell] 純文字檢視 複製程式碼
$ git stash save "螞蟻部落"

不需要-m引數,否則會報錯。

三.是否可以指定路徑:

首先看一下專案的目錄結構:

a:3:{s:3:\"pic\";s:43:\"portal/201808/01/002921w7s98p8spy46tppp.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

根目錄下有子目錄subDir,此目錄下有檔案subDir.txt。

修改readme.txt和subDir.txt檔案,檢視狀態如下:

[Shell] 純文字檢視 複製程式碼
$ git status

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/01/003001w6kic6j5i5o1j51i.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

現在使用push指定儲藏路徑,程式碼如下:

[Shell] 純文字檢視 複製程式碼
$ git stash push subDir/subDir.txt

下面檢視一下儲藏後的狀態,截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/01/003044det5101dteldrx0o.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

可以看到,子目錄下的修改檔案subDir.txt檔案被儲藏起來,根目錄下的修改檔案依然保持原來狀態。

再來看一下save指定儲藏路徑的情況,程式碼如下:

[Shell] 純文字檢視 複製程式碼
$ git stash save subDir/subDir.txt

然後再來檢視專案狀態,截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/01/003126uxj1xjvdv75ni7yx.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

由此可見,無論根目錄還是子目錄的修改檔案都被儲藏起來。

所以$ git stash save後面跟著路徑無效,並不能精確儲藏指定路徑下的修改檔案。

相關文章