Git自學(xué)成才——git stash

如果有未提交的更改,是不能git pull的,下面演示一下如何不提交更改,拉取代碼,實現(xiàn)Android Studio的Update project

修改一個文件

D:\client>git status
On branch lichen_test
Your branch is up-to-date with 'origin/lichen_test'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   xxx.java

no changes added to commit (use "git add" and/or "git commit -a")

說明有一個文件被修改了,還沒有add,相當(dāng)于本地修改。這時,我想拉取服務(wù)端最新代碼,發(fā)現(xiàn)是error的:

D:\client>git pull --rebase
error: Cannot pull with rebase: You have unstaged changes.

因為git pull只是在本地更改commit之后,才是被允許的。

先看一下之前已經(jīng)stash過的記錄:

D:\client>git stash list
stash@{0}: On lichen_test: Uncommitted changes before Update at 2016/5/17 11:22

然后把剛才的本地修改藏起來stash

D:\client>git stash
Saved working directory and index state WIP on lichen_test: 6acf645 something
HEAD is now at 6acf645 something                                                                                                                   

之后,看一下狀態(tài):

D:\client>git status
On branch lichen_test
Your branch is up-to-date with 'origin/lichen_test'.
nothing to commit, working directory clean

D:\client>git stash list
stash@{0}: WIP on lichen_test: 6acf645 something                                                                              

看到的狀態(tài)是沒有需要commit的,工作空間是干凈的;stash的歷史記錄里又多了一條。

然后執(zhí)行git pull就可以了:

D:\client>git pull --rebase
Current branch lichen_test is up to date.

剛才藏起來的更改恢復(fù)回來:

D:\client>git stash pop
On branch lichen_test
Your branch is up-to-date with 'origin/lichen_test'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   xxx.java

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (c09db35f5eb59ada6770fe6ab6073b4f00bc912a)

看一下歷史記錄

D:\client>git stash list
stash@{0}: On lichen_test: Uncommitted changes before Update at 2016/5/17 11:22

這樣就完成了一次Android Studio的Update工程

總結(jié)一下stash命令:

git stash #可用來暫存當(dāng)前正在進(jìn)行的工作
git stash pop #從Git棧中讀取最近一次保存的內(nèi)容
git stash list #顯示Git棧內(nèi)的所有備份
git stash clear #清空Git棧
git stash apply stash@{1} #可以將你指定版本號為stash@{1}的工作取出來
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Git 是目前最流行的分布式版本控制系統(tǒng)之一。 版本控制指的是,記錄每次版本變更的內(nèi)容和時間等細(xì)節(jié),保留各版本之間...
    神齊閱讀 1,464評論 0 7
  • 配置 首先是配置帳號信息ssh -T git@github.com # 登陸 github 修改項目中的個人信息 ...
    guanguans閱讀 759評論 0 3
  • 一、Git學(xué)習(xí)總結(jié)的命名 初始化一個Git倉庫。 添加文件到Git倉庫步驟分兩步:使用命令git add <fil...
    Cheriez閱讀 461評論 0 1
  • 這篇博文是自己在學(xué)習(xí)git過程中的思考總結(jié)。本文僅僅代表個人的看法,如有不妥地方還請本文文末留言。 ?? 原文鏈接g...
    Ming_Hu閱讀 1,120評論 4 18
  • 一不小心,拖延又附體! 今天,如果再不更新我的公眾號,也許就要斷更2周了。 毫無疑問,老母親的拖延癥毛病再次來臨。...
    俐雅_Liya閱讀 829評論 2 5