小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

git stash

 灬木木的花灬 2015-09-22

 開發(fā)人員常常遇到這種情況:花了幾天時間一直在做一個新功能,已經改了差不多十幾個文件,突然有一個bug需要緊急解決,然后給一個build測試組。在Git問世之前基本上靠手動備份,費時且容易出錯。

git stash命令簡而言之就是幫助開發(fā)人員暫時擱置當前已做的改動,倒退到改動前的狀態(tài),進行其他的必要操作(比如發(fā)布,或者解決一個bug,或者branch,等等),之后還可以重新載入之前擱置的改動,很cool吧?

首先,用git add把所有的改動加到staging area。

git add .

接著用git stash把這些改動擱置。

git stash

到這里,當前工作平臺就回復到改動之前了。該干嘛干嘛,此處省略1萬字。

需要找回之前擱置的改動繼續(xù)先前的工作了?

git stash apply 即可。

也可以用 git stash list 來查看所有的擱置版本(可能擱置了很多次,最好不要這樣,容易搞混)

在出現(xiàn)一個擱置棧的情況下,比如如果你想找回棧中的第2個,可以用 git stash apply stash@{1}

如果想找回第1個,可以用 git stash pop

如果想刪除一個stash,git stash drop <id>

刪除所有stash,git stash clear


轉載二:

我第一次用這個命令時被坑過,經過是這樣的:我發(fā)現(xiàn)有一個類是多余的,想刪掉它又擔心以后需要查看它的代碼,想保存它但又不想增加一個臟的提交。這時我想到了git stash,于是那一天我執(zhí)行了下這個命令就回去睡覺了。 第二天我繼續(xù)在這個目錄里工作,coding了半天才發(fā)現(xiàn)前一天的修改都不見了,暫存區(qū)里也沒有任何昨天修改的紀錄。是我忘了保存了嗎?

相信git老手們早就看出問題所在了,修改消失了并不是因為我忘了保存,而是git stash在保存完當前工作目錄和暫存區(qū)以后,會用HEAD重置這兩者。因為我昨天的修改沒有提交,HEAD指向的是前天的版本,所以stash以后工作目錄和暫存區(qū)就會被前天的的版本所重置。

正確的做法應該是在git stash后再執(zhí)行git stash apply,當前的工作目錄就恢復回來了。

git stash apply相當于利用過去貯藏(stashed)的工作目錄快照,恢復當前的工作目錄。如果工作目錄在貯藏之后發(fā)生了變化,恢復時就會產生沖突(conflict),這種情況下git stash apply會對工作目錄進行merge操作。

和merge一樣,git stash apply之前要保持當前目錄是干凈的(沒有未提交的改變),否則會保錯:

error: Your local changes to the following files would be overwritten by merge: Please, commit your changes or stash them before you can merge.

git stash apply只能恢復工作目錄,如果想把暫存區(qū)也按照貯藏時的暫存區(qū)恢復的話,可以加上--index,如果暫存區(qū)恢復時發(fā)生沖突了會怎么辦呢?嘿嘿,它會直接報錯不允許你這么做:


    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多