git切換到別的分支,要暫時保存當前分支的修改(不想進行add 和commit)的方法 git stash

最近在一個原有的項目上作一次很是大的改版,底層的數據庫作了很大的變化,跟如今的版本沒法兼容。如今的工做除了開發最新的版本以外還要對原來的版本作例行的維護,修修補補。因而有了在兩個分支之間遊走切換的問題,最新改版的代碼在分支new上,舊版本的代碼在分支old上,我在new上開發了一半,突然有人給了我一個改進的需求,因而我要切換回old去修改代碼。在這個場景下,我摸索了三種方法:html

及時commit代碼
在new分支上把已經開發完成的部分代碼commit掉,不push,而後切換到old分支修改代碼,作完了commit,全部分支互不影響,這是一個理想的方法。git

 

使用git stash
有時候寫了一半的JAVA代碼,都還不能編譯經過的,就被叫去改另外一個分支的bug了。數據庫

在new分支上的時候在命令行輸入:app

git stash
或者.net

git stash save 「修改的信息"
這樣之後你的代碼就回到本身上一個commit了,直接git stash的話git stash的棧會直接給你一個hash值做爲版本的說明,若是用git stash save 「修改的信息」,git stash的棧會把你填寫的「修改的信息」做爲版本的說明。命令行

接下來你回到old分支修改代碼完成,你又再回到new分支,輸入:htm

git stash pop
或者blog

git stash list
git stash apply stash@{0}
就能夠回到保存的版本了。git stash pop的做用是將git stash棧中最後一個版本取出來,git stash apply stash@{0}的做用是能夠指定棧中的一個版本,經過git stash list能夠看到全部的版本信息:開發

stash@{0}: On order-master-bugfix: 22222
stash@{1}: On order-master-bugfix: 22222
而後你能夠選擇一個你須要的版本執行:同步

git stash apply stash@{0}
這時候你擱置的代碼就回來了。

原文地址:http://www.tonitech.com/2344.html

這是一個很是經常使用的場景,我正在一個分支上修改功能,而後遇到一個bug須要解決,我得切換到其餘分支來修改這個bug,可是目前的功能還在開發階段,還不成熟,還不想執行add和commit,執行這兩個後就會在歷史中有記錄,並不想這樣作,因而就有了git stash功能,把我當前的修改暫時保存起來,而後回來的時候再取出來繼續開發功能.

git stash是針對整個git工程來進行保存的,也就是說區分不了branch.好比我在a分支git stash save "sss"暫存了一個修改,那麼我切換到b分支,我使用git stash pop 就能把在a分支保存的"sss"這個修改同步到了b分支上.因此當咱們須要在不一樣的分支上取出不一樣的分支上保存的修改,那麼就用到了git stash list,這個命令能夠把在全部分支上暫存的信息顯示出來,而後咱們經過 git stash apply stash@{0} 來選擇恢復哪一個暫存,stash@{0}這個會在list中列出來.

而咱們使用Android studio就太方便了.

在當前工程的任何一個文件中,點擊右鍵,選擇git--> 選擇repository ---> 裏面會列出stash changes和unstash changes命令,一個是保存修改的命令,一個是恢復修改的命令.

stash changes會讓咱們給要保存的內容輸入一個message,這個和git stash save ""是同樣的

而 unstash changes會列表咱們以前保存過的list

相關文章
相關標籤/搜索