溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Git工作區(qū)儲藏兼談分支管理中的問題怎么解決

發(fā)布時間:2021-12-07 14:27:34 來源:億速云 閱讀:133 作者:iii 欄目:大數(shù)據(jù)

本篇內容主要講解“Git工作區(qū)儲藏兼談分支管理中的問題怎么解決”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Git工作區(qū)儲藏兼談分支管理中的問題怎么解決”吧!

問題回顧

小伙伴遇到的問題是這樣的:

現(xiàn)在有一個master分支,master分支中有一個文件叫01.txt,該文件中只有一行數(shù)據(jù),然后對01.txt執(zhí)行add和commit,然后再從master分支中創(chuàng)建出一個新的分支fa,切換到fa分支上,然后向01.txt中再添加一行數(shù)據(jù),添加成功之后,不做任何事情,再切換回master分支,此時用cat命令查看01.txt文件,發(fā)現(xiàn)竟然有兩行數(shù)據(jù),按理說master中的01.txt只有一行數(shù)據(jù),而fa中的01.txt有兩行數(shù)據(jù),整個過程如下圖:

Git工作區(qū)儲藏兼談分支管理中的問題怎么解決  

要搞清楚這個問題,得先明白下面這個問題:

cat命令和git無關,就是用來查看文件的,我為了演示方便使用了cat命令,這和直接用記事本打開文件查看效果是一樣的。

可能眼尖的小伙伴已經(jīng)發(fā)現(xiàn)端倪了,我們上面這個操作少了兩個步驟,那就是add/commit,fa分支中的數(shù)據(jù)修改之后直接切換回了master,而沒有add/commit。正常情況下(修改數(shù)據(jù)后add/commit),如果master和fa分支中的數(shù)據(jù)不一致,我們執(zhí)行了git checkout -進行分支的切換,這個時候工作區(qū)中的文件內容也是會跟著變化的(大家可以通過cat命令或者直接在記事本中打開工作區(qū)的文件來查看這種變化),但是如果我在fa分支中修改了文件卻沒有add/commit就切換回master,此時如果工作區(qū)的文件變化了,可能會導致我在fa分支中的修改丟失,因此,這個時候工作區(qū)的文件就沒有變化,即工作區(qū)的文件內容還是fa分支中修改的內容。  

解決這個問題,我們有兩種方案,請小伙伴們往下看。

解決方案

方案一

第一種解決方案就是在某一個分支修改文件之后,先add并且commit之后再去切換分支,這個操作就比較簡單了,我這里就不再演示了。

方案二(儲藏)

第二種解決方案就是儲藏(Stashing),儲藏適用在如下場景中:

當我在一個分支fa中修改了文件,但是還沒有完全改好,此時我并不想add/commit,但是這個時候有一個更急迫的事情在另外一個分支fb上需要我去做,我必須要切換分支。

在這樣一個場景中,如果我直接切換分支,會出現(xiàn)如下兩個問題:

1.從fa切換到fb之后,工作區(qū)的代碼還是fa的代碼,不符合我的工作要求。
2.假設我不在乎問題1,在fb中直接修改工作區(qū)的代碼,等我在fb中修改完后提交后再回到fa,會發(fā)現(xiàn)我之前的代碼丟失了。

為了解決這個問題,Git給我們提供了儲藏(Stashing)。

現(xiàn)在假設一開始master和fa分支中的文件內容都是一致的,而且兩個分支的工作區(qū)都是干凈的,即沒有東西需要add/commit,此時,我在master中修改了文件,修改完成之后,執(zhí)行git status命令我們看到master中有東西需要add/commit,此時我想切換到fa分支中去,但是并不想對master分支執(zhí)行add/commit,這個時候我們可以執(zhí)行如下命令,先將當前分支中的文件儲藏起來:

$ git stash

OK,執(zhí)行完git stash命令之后,再執(zhí)行git status,我們發(fā)現(xiàn)此時master分支已經(jīng)是干凈的了,此時我們可以愉快的切換到fa分支中去了,切換到fa分支之后,我們發(fā)現(xiàn)master中的修改并沒有干擾到fa分支,當我們完成了fa分支中的工作之后,再回到master分支,此時執(zhí)行如下命令可以恢復剛剛儲藏的數(shù)據(jù):

$ git stash apply

上面這個命令執(zhí)行完之后,master分支中的工作區(qū)中的文件就恢復了,此時執(zhí)行git status就可以看到又有數(shù)據(jù)需要add/commit了。

我們也可將工作區(qū)儲藏多次,這個時候我們可以執(zhí)行如下命令來查看儲藏:

$ git stash list

執(zhí)行效果如下:

Git工作區(qū)儲藏兼談分支管理中的問題怎么解決

git stash apply表示恢復最近一次儲藏,如果我們想恢復到之前的某一次儲藏,可以加上儲藏的名字,如下:

$ git stash apply stash@{1}

還有一些其他的關于儲藏的命令:

1.恢復儲藏并出棧
$ git stash pop

執(zhí)行效果和git stash apply一樣,不同的是,這里執(zhí)行完之后,會將棧頂?shù)膬Σ匾瞥?/p>

2.刪除某一個儲藏
$ git stash drop stash@{4}

最后一個參數(shù)是指儲藏的名字。

到此,相信大家對“Git工作區(qū)儲藏兼談分支管理中的問題怎么解決”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

git
AI