日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

git shanchu stash_git stash用法

發布時間:2023/11/28 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git shanchu stash_git stash用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

常用git stash命令:

(1)git stash?save "save message"? : 執行存儲時,添加備注,方便查找,只有git stash 也要可以的,但查找時不方便識別。

(2)git stash list?:查看stash了哪些存儲

(3)git stash show?:顯示做了哪些改動,默認show第一個存儲,如果要顯示其他存貯,后面加stash@{$num},比如第二個 git stash show stash@{1}

(4)git stash show -p?: 顯示第一個存儲的改動,如果想顯示其他存存儲,命令:git stash show? stash@{$num}??-p ,比如第二個:git stash show??stash@{1}??-p

(5)git stash apply?:應用某個存儲,但不會把存儲從存儲列表中刪除,默認使用第一個存儲,即stash@{0},如果要使用其他個,git stash apply?stash@{$num} ,?比如第二個:git stash apply?stash@{1}

(6)git stash pop?:命令恢復之前緩存的工作目錄,將緩存堆棧中的對應stash刪除,并將對應修改應用到當前的工作目錄下,默認為第一個stash,即stash@{0},如果要應用并刪除其他stash,命令:git stash pop?stash@{$num} ,比如應用并刪除第二個:git stash pop?stash@{1}

(7)git stash drop?stash@{$num} :丟棄stash@{$num}存儲,從列表中刪除這個存儲

(8)git stash clear?:刪除所有緩存的stash

說明:新增的文件,直接執行stash是不會被存儲的,舉例如下:

如上圖:在git status 那一步很明顯可以看出來,我修改了README,添加了新文件abc.txt,然后執行了git stash save后,在執行git stash list 可以看到剛才的save是的信息,然后使用git stash show ,只顯示了README的改動被存起來了。

我們知道,執行了git statsh 以后,被存起來的在當前目錄再執行git status 就看不到了,但是我們現在再執行git status,如下:

這個文件還在,說明沒有被存起來。說白了就是沒有在git 版本控制中的文件,是不能被git stash 存起來的。

那要怎么辦呢,這個文件我也想存起來,很明顯,先執行下git add 加到git版本控制中,然后再git stash就可以了,如下:

最后一步可以看出來,這個新增文件已經被stash了。

這個時候再執行下git status ,被存起來的在當前目錄就看不到了,如下:

這個時候,想切分支就再也不會報錯有改動未提交了。

如果要應用這些stash,直接使用git stash apply或者git stash pop就可以再次導出來了。

總結下:git add 只是把文件加到git 版本控制里,并不等于就被stash起來了,git add和git stash 沒有必然的關系,但是執行git stash 能正確存儲的前提是文件必須在git 版本控制中才行。

參考的一個鏈接中說到了以下,我摘錄此處備份下(就是只stash一部分文件):

常規 git stash 的一個限制是它會一下暫存所有的文件。有時,只備份某些文件更為方便,讓另外一些與代碼庫保持一致。一個非常有用的技巧,用來備份部分文件:

add 那些你不想備份的文件(例如: git add file1.js, file2.js)

調用 git stash –keep-index。只會備份那些沒有被add的文件。

調用 git reset 取消已經add的文件的備份,繼續自己的工作。

另外還可以使用git stash --patch[-p],(https://www.jianshu.com/p/fe4d54cb6244)

比如有個場景是:在本地改了大量的代碼,但是有兩個文件是適配本地的配置文件不需要上庫,如果git commit [filename]的話需要寫很多文件,很不方便,于是使用了stash方法,這里做個記錄.

首先解釋下git stash的作用,git stash是將本地沒有commit的部份全部存儲起來,這樣方便你進行pull之類的操作,具體可以參考Git 工具 - 儲藏與清理.

但是如果直接git stash的話,會將當前所有文件都存儲起來,而我只想存儲兩個配置文件,其他的全部一起commit,這應該怎么辦呢?這里需要用到一個git stash -p的命令;它是一個交互式命令,我們可以一個文件一個文件的遍歷,決定每個文件的操作方式.

root /u/c/s/cbs (master)# git stash -p

diff --git a/cmd/scripts/cbs.sh b/cmd/scripts/cbs.sh

old mode 100644

new mode 100755

Stash mode change [y,n,q,a,d,/,?]?

這里的[y,n,q,a,d,/,?]分別代表的含義如下:

y - stage this hunk

n - do not stage this hunk

q - quit; do not stage this hunk nor any of the remaining ones

a - stage this hunk and all later hunks in the file

d - do not stage this hunk nor any of the later hunks in the file

g - select a hunk to go to

/ - search for a hunk matching the given regex

j - leave this hunk undecided, see next undecided hunk

J - leave this hunk undecided, see next hunk

k - leave this hunk undecided, see previous undecided hunk

K - leave this hunk undecided, see previous hunk

s - split the current hunk into smaller hunks

e - manually edit the current hunk

? - print help

所以,遇到我們需要stash的文件,我們就y,不需要stash需要commit的文件,我們就n,如果接下來沒有需要stash的文件,則直接q退出就行.

將文件保存好后,我們就可以commit和push剩下的代碼了.

git commit -m ""

git push origin master

然后我們將stash的文件恢復到本地,所有的操作就完成了.

git stash pop

參考鏈接:

https://www.cnblogs.com/zndxall/archive/2018/09/04/9586088.html

https://blog.csdn.net/jeffasd/article/details/53107182

總結

以上是生活随笔為你收集整理的git shanchu stash_git stash用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。