Git 分支管理-git stash 和git stash pop

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

合并分支,沖突是難免的,在實際協作開發中我們遇到的情況錯綜復雜,今天就講兩個比較重要的命令使用git stash?和git stash pop

試想一下:1.假如我們在develop分支開發,這時候突然技術經理說有個緊急修復下,這修復bug之前說了,需要從master穩定版本開一個分支,而我們develop如果沒有commit,而直接切換到master,會有如下提示:

?

[plain]?view plain?copy
  1. zxdeMacBook-Pro:hswallpager?zs$?git?checkout?master??
  2. error:?Your?local?changes?to?the?following?files?would?be?overwritten?by?checkout:??
  3. ????app/src/main/java/Activity.java??
  4. Please,?commit?your?changes?or?stash?them?before?you?can?switch?branches.??
  5. Aborting??
  6. ??
  7. zxdeMacBook-Pro:hswallpager?zs$?git?branch??
  8. *?develop??
  9. ??master??


根據提示,我們需要提交修改或者在切換分之前 stash 一下。而我們每次間斷就要commit一次,將來git log里會有很多臨時提交,太多了讓人無法快速定位,而這的確不是我們想要的,那就只有stash。stash的含義就是把工作區的修改臨時儲藏起來,等以后再恢復使用。那我們不妨一試git stash,看看結局是什么樣子的:

?

?

[plain]?view plain?copy
  1. zxdeMacBook-Pro:hswallpager?zs$?git?stash??
  2. Saved?working?directory?and?index?state?WIP?on?develop:?b70f2af??develop?update??
  3. HEAD?is?now?at?b70f2af??develop?update??

?

?

先看最后一句 "HEAD is now at b70f2af develop update". 還記得上一篇的分支圖吧。

?

[plain]?view plain?copy
  1. *???073fc5c?合并后的修改??
  2. |\????
  3. |?*?b70f2af??develop?update??
  4. *?|?41754e3?修改??
  5. |/????

?

?

因為我們上一篇master合并后develop后,并沒有將develop的分支和master同步,因此develop分支的最新的提交記錄就在b70f2af,也就是工作區目前是干凈的。git stash ?執行后,develop分支就相當于什么也沒操作一樣。

?

接著我們在執行最開始的切換到master分支,看看會怎樣,還會不會提示上述信息:

?

[plain]?view plain?copy
  1. zxdeMacBook-Pro:hswallpager?zs$?git?checkout?master??
  2. Switched?to?branch?'master'??
  3. Your?branch?is?ahead?of?'origin/master'?by?8?commits.??
  4. ??(use?"git?push"?to?publish?your?local?commits)??
  5. ??
  6. zxdeMacBook-Pro:hswallpager?zs$?git?branch??
  7. ??develop??
  8. *?master??


怎么樣,是不是正確切換到master分支了。現在我們在新建并切換分支hotfixes-01.然后可以修復緊急bug了。然后修改,提交,刪除hotfixes-01即可。然后我們繼續切回develop分支:

?

?

[plain]?view plain?copy
  1. zxdeMacBook-Pro:hswallpager?zs$?git?checkout?develop??
  2. Switched?to?branch?'develop'??
  3. zxdeMacBook-Pro:hswallpager?zs$?git?status??
  4. On?branch?develop??
  5. ??
  6. nothing?to?commit,?working?directory?clean??

?

?

這時候我們可以先把master分支的修改合并到develop,操作步驟以前也學過了,合并沖突等。這時候我們看會代碼,stash之前的代碼已經看不到了。那我們怎么繼續接著上述的修改恢復現場呢。這時候用到git stash pop
我們先看一下stash清單,執行git stash list

?

[plain]?view plain?copy
  1. zxdeMacBook-Pro:hswallpager?zs$?git?stash?list??
  2. stash@{0}:?WIP?on?develop:?b70f2af?develop?update??


然后我們用git stash pop 恢復現場,看一下結果:

?

?

[plain]?view plain?copy
  1. zxdeMacBook-Pro:hswallpager?zs$?git?stash?pop??
  2. On?branch?develop??
  3. ??
  4. Changes?not?staged?for?commit:??
  5. ??(use?"git?add?<file>..."?to?update?what?will?be?committed)??
  6. ??(use?"git?checkout?--?<file>..."?to?discard?changes?in?working?directory)??
  7. ??
  8. ????modified:???app/src/main/java/Activity.java??
  9. ??
  10. no?changes?added?to?commit?(use?"git?add"?and/or?"git?commit?-a")??
  11. Dropped?refs/stash@{0}?(44c79bddb5c6c3848bc0de0b687cf14d4907b012)??

?

?

?

這時候在看工作區的源代碼,發現已經正確恢復現場,可以繼續在以前基礎上工作了。

?

2.現在另一種情況:你pull最新代碼,但這時候你又不想重新增加commit記錄,這時候先git stash,然后pull,最后在git stash pop,

?

這1和2兩種情況在實際開發過程中會經常用到,要熟練掌握git stash的應用。

補充:在我們多次使用git stash 后,git棧里充滿了很多未提交的代碼,這時候用git stash list 可以講git 棧信息打印出來,比如

git stash apply stash@{1}?就代表把指定版本號為stash@{1}的工作取出來。清空的話使用git stash clear

?

git stash pop 和 git stash?apply 的不同:

apply 讀取暫存區的數據,通過apply后,暫存區的數據依然存在。

pop 是取出最新的一次暫存數據,pop后,暫存區就不會存在這次數據了。

?

總結:

git stash ?#可用來暫存當前正在進行中的工作

git stash pop ?#從git棧中恢復第一個。相當于git stash apply 和git stash drop

git stash list ? #打印git棧中的所有信息

git stash clear ?#清空git棧

git stash apply stash@{1} ?#將你指定版本號為stash@{1}的工作取出

?

版本分支是git區分集中式版本控制的一大優勢,而為了保證團隊協作中順利的開發,建議大家多用分支,至于具體分支的命名,不必拘泥死板,根據自己團隊的實際情況,讓分支成為我們團隊開發的助推器,而不是拖后腿。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450194.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450194.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450194.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

useState語法講解

useState語法講解 語法定義 const [state, dispatch] useState(initData)state&#xff1a;定義的數據源&#xff0c;可視作一個函數組件內部的變量&#xff0c;但只在首次渲染被創造。dispatch&#xff1a;改變state的函數&#xff0c;推動函數渲染的渲染函數。dispatch有兩…

NSOperation的進階使用和簡單探討

本文將會從多個方面探討NSOperation類和NSOperationQueue類的相關內容 一、簡介 NSOperation類是iOS2.0推出的&#xff0c;通過NSThread實現的,但是效率一般。 從OS X10.6和iOS4推出GCD時&#xff0c;又重寫了NSOperation和NSOperationQueue&#xff0c;NSOperation和NSOperati…

Android應用開發—LayoutParams的用法

Android應用開發—TextView的動態創建 這篇文章講到了“TextView控件布局位置的控制”&#xff0c;主要依賴于RelativeLayout.LayoutParams的使用&#xff0c;本文簡單介紹下LayoutParams的用法 注&#xff1a;本文大部分內容參考android,利用layoutParams代碼動態布局空間位置…

廖雪峰Java1-2程序基礎-7布爾運算符

布爾運算符 關系運算符&#xff1a;>&#xff0c; >&#xff0c; <&#xff0c; <&#xff0c; &#xff0c;!與運算 &&或運算 |非運算 &#xff01;int n 5;boolean t n > 0;//trueboolean f n < 0;//falseboolean isFive n 5;//trueboolean i…

第二十一屆國際C語言混亂代碼大賽結果公布

摘要&#xff1a;國際C語言混亂代碼大賽&#xff08;IOCCC, The International Obfuscated C Code Contest&#xff09;是一項著名的國際編程賽事&#xff0c;從1984年開始到2006年&#xff0c;每年舉辦一次。2006年后中止了多年&#xff0c;2011年又開始恢復。比賽的目的是寫出…

QuartZ Cron表達式

CronTrigger 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 CronTriggers往往比SimpleTrigger更有用&#xff0c;如果您需要基于日歷的概念&#xff0c;而非SimpleTrigger完全指定的時間…

maven02-----Maven項目構建的初次使用

一. 創建Maven項目 1.1 建立一個Hello項目 當然也可以通過java project的方式創建符合Maven約定的目錄結果的項目&#xff0c;并手動建立pom.xml文件&#xff0c;但是太繁瑣了。因此&#xff0c;這里直接建立maven項目。note: eclipse有內建的maven項目創建功能&#xff0c;倘若…

微軟超過蘋果 成為全球第一大市值公司

11月23日周五盤中至收盤&#xff0c;微軟市值正式超過蘋果&#xff0c;成為世界上市值最高的公司。收盤時&#xff0c;微軟市值為7533.4億美元&#xff0c;蘋果市值為7468.2億美元&#xff0c;亞馬遜市值為7366.2億美元&#xff0c;谷歌市值為7255.2億美元。 上次蘋果與微軟市值…

創新大賽成就創業夢想 超30%入榜應用獲投資意向

摘要&#xff1a;騰訊開放平臺宣布移動應用賽區正式開啟&#xff0c;新一輪的創業夢想正在成長中。據悉&#xff0c;在騰訊開放平臺應用創新大賽中誕生了多款DAU&#xff08;日活躍用戶數&#xff09;超百萬的應用。小魚吃吃吃、開心泡泡貓等引領社交游戲潮流&#xff0c;視頻達…

如何判斷軟件架構的好與壞

判斷一個軟件的架構的好與壞有很多方法&#xff0c;不過如果讓我一句話來描述的話&#xff1a; 如果一個軟件開發程度在70%以上的情況下&#xff0c;加入一個新功能&#xff0c;還需要涉及到大量的文件&#xff0c;代碼的修改&#xff0c;那么這個軟件架構一定很爛&#xff0c;…

網關(Gateway)詳解

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 網關(Gateway)又稱網間連接器、協議轉換器。網關在網絡層以上實現網絡互連&#xff0c;是最復雜的網絡互連設備&#xff0c;僅用于兩個高…

【重點突破】—— React實現富文本編輯器

前言&#xff1a;富文本編輯器Rich Text Editor, 簡稱 RTE, 是一種可內嵌于瀏覽器&#xff0c;所見即所得的文本編輯器。 一、安裝插件 react-draft-wysiwyg&#xff1a; 文本編輯器插件 draftjs-to-html&#xff1a;文本轉換為html的插件 yarn add react-draft-wysiwyg draftj…

1106: 回文數(函數專題)

題目描述 一個正整數&#xff0c;如果從左向 右讀&#xff08;稱之為正序數&#xff09;和從右向左讀&#xff08;稱之為倒序數&#xff09;是一樣的&#xff0c;這樣的數就叫回文數。輸入兩個整數m和n&#xff08;m<n)&#xff0c;輸出區間[m&#xff0c;n]之間的回文數。 …

Ubuntu 12.10 正式發布

Canonical今天正式發布了Ubuntu 12.10版本&#xff0c;代號為“Quantal Quetzal”&#xff0c;意為量子綠咬鵑&#xff0c;綠咬鵑是一種生活在美洲的顏色極為鮮艷的鳥。Ubuntu的版本代號一直都這么奇怪。 在該版本中&#xff0c;改進了Unity桌面環境&#xff0c;弱化了本地應用…

Hibernate中1+N問題以及解決方法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. Hibernate中的1N問題描述 在多對一關系中&#xff0c;當我們需要查詢多的一方對應的表的記錄時&#xff0c;可以用一條sql語句就能…

Android應用開發—通用的GridView網格分割線

注&#xff1a;本文基于 Android RecyclerView 使用完全解析 體驗藝術般的控件 中關于GridView網格分割線部分代碼擴展而來。 原接口代碼&#xff1a; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import andro…

hdfs部署

一、下載Hadoop 2.6.0-cdh5.7.0的tar.gz包并解壓&#xff1a; wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0.tar.gz tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz cd /usr/local/hadoop-2.6.0-cdh5.7.0/ ls bin bin-mapreduce1 cloudera etc examples …

JVM技術周報第2期

JVM技術周報第2期 JVM技術周報分享JVM技術交流群的討論內容&#xff0c;由群內成員整理歸納而成。如果你有興趣入群討論&#xff0c;請關注「Java技術精選」公眾號&#xff0c;通過右下角菜單「入群交流」加我好友&#xff0c;獲取入群詳情。 1、如何閱讀源碼&#xff1f; 在我…

最長重復子串和最長不重復子串求解

最長重復子串和最長不重復子串求解 本文內容框架&#xff1a; 1 最長重復子串 基本方法、KMP算法求解、后綴數組求解 2 最長不重復子串 基本方法、動態規劃、動態規劃Hash 3 小結 1最長重復子串 1.1問題描述 首先這是一個單字符串問題。子字符串R 在字符串L 中至少出現兩…