2014-07-23 31 views
2

我知道git stash show -p [email protected]{0}提供保存到該存儲條目中的更改日誌,但我想知道當我進行這些更改時我正在使用哪個分支。這將是許多場景非常有幫助:當我隱藏更改時,我該如何判斷我所處的分支?

  • 清理我的藏匿堆棧
  • 回到了我藏的變化一個老問題(因此舊的分支)時,當時我就思考能夠很快回到問題和渾渾噩噩的地步,但最終在很長一段時間內陷入了其他問題。我發現自己在思考:「我認爲我爲此藏起了變化,但是我不確定,如果是這樣,那麼藏匿在堆棧中的是他們。」

回答

6

這與git stash list一起顯示。在這個例子中,「夥伴」表示分支夥伴,「主人」表示分支主人。

$ git stash list 
[email protected]{0}: WIP on dude: 7eb87fe initial 
[email protected]{1}: WIP on master: 7eb87fe initial 

另外,聽起來好像你在臨時放棄工作時隱藏起來。我有另一個我認爲優於存儲的工作流程,我承諾並重置它。這種方式的變化是在分支上,如果我放棄了該分支,相關的代碼也會被丟棄。

# do some work on dev 
git co -b dev 
# temporarily abandon it 
git commit -a -m'commit instead of stash' 
# do other work on master 
git co master 
# lets resume the old work 
git co dev 
# un stash 
git reset HEAD^ 
+0

嘿,如果你可以移動的工作流程的建議(這是我很欣賞,我想我會開始這種方式做的)所接受的評論,我會標記問題的答案。 –

+0

有在評論中沒有格式,所以我認爲這是在回答最好的左......或者,我可以完全將其刪除。 –

1

(理想情況下,這應該是一個評論,但它太大了,需要太多的格式...)

注意,分支名(存儲爲默認消息的一部分)就是名字在存儲時。如果您有一段時間以來一直忽略的舊存儲器,則可能是分支名稱已移動。例如:

$ git checkout -b hack 
... 
$ git stash # creates "WIP on hack" 
... 
$ git branch -D hack # delete hack branch 
... 
$ git checkout -b hack 
... 
$ git stash list 

「關於黑客WIP」你會在列表中看到的是hack分支,而不是新的。

實際存儲引用存儲在[email protected]{4}或任何數字所指向的東西指向特定提交(git stash保存的特殊合併提交,我稱之爲"stash bag")。該提交有一個父提交,它有另一個父代,等等;這個父母鍊形成了git保存的提交圖內的實際分支結構。分支名稱就是這樣:只是一個名字,你可以隨意改變,或者用git branch -D hack來刪除,但分支結構是永久的,至少和任何git提交一樣永久。 (只要從某個指定的起點(如[email protected]{4})可以「到達」,提交就保留在存儲庫中。)

例如,如果您已重新綁定分支,則存儲本身指向在(未衍合)分支結構:

   n - n <-- hack 
      /
* - * - * - *   <-- mainline 
     \ 
     o - o   <-- [old hack when stash was made] 
      |\ 
      i-w   <-- [email protected]{4} 

這裏,藏匿袋掛了最後的「老」提交o,而分支hack,這是重建基礎,現在指向最後一個「新「提交n

你當然可以在舊的分支上塗抹或彈出舊的儲物袋;這或多或少意味着工作是如何工作的。或者你可以使用git stash branch老藏匿轉換成它自己的一個新的分支:例如,如果你這樣做:

git stash branch restore-hack [email protected]{4} 

,你會得到此圖:

   n - n <-- hack 
      /
* - * - * - *   <-- mainline 
     \ 
     o - o   <-- restore-hack 

與現在的指數包含不管它包含你這麼做的時候原來git stash和工作樹成立,當你這樣做,同樣git stash它的方式。現在(換句話說,在「藏包」已解壓縮到索引和工作樹。)您可以git add和/或git commit作出的恢復(舊)更多的提交hack分支,現在被命名爲restore-hack

如果你發現自己有很多舊存儲的存儲空間,你可能希望開始做一些真正的提交,這些提交只是稍後被重寫(如Andreas Wederbrand在his answer中建議的那樣)。我發現他們往往是減少混亂,我和我的需要變基回暖「上游」的轉變,他們只是自動變基。

相關問題