2017-03-09 52 views
2

git stashgit stash pop這個問題的一個很好的解決方案?Git暗藏意外分支開關

我工作的分支B,但事情發生了意外,並瞞着我,把我放回舊的分支,分支A,在那裏我一直在各種任務的工作。

Git希望我將新工作提交給分支機構A,然後才能切換到分支機構B,但我不能(不應該)那樣做。

安全(意思是我不會失去我所有的工作,但能夠把它放到正確的分支),而在分支A(錯誤的分支)上,執行git stash,然後切換到分支B正確的分支)並做git stash pop?這樣做會遇到什麼災難嗎?

我不確定如何不炸燬我的Git項目!

+0

完整性:您也可以在分支A上提交工作,從提交的提示創建臨時分支,從您開始的位置重置分支A;然後將temp分支合併到分支B – ckruczek

回答

3

這似乎是一個合適的舉措。使用git stash將在您發現差異時保留您的工作索引,並允許您將代碼安全地移至您需要的分支。

就像一個供參考,git stash pop將東西移出存儲並進入索引,但也刪除存儲中的東西。在我不是100%確定的情況下,我的偏好是使用git stash apply,因此我總是可以檢索之前存儲的工作索引,直到我覺得安全到足以將其刪除。

0

我認爲git stash是完美的爲您的目的,並根據我,this後確認我的意見。

也許你可能會有一些衝突需要解決。

我希望這會幫助你。

0

您目前的情況聽起來像是使用git stash的一個很好的理由。你說以下內容:

Git希望我將我的新工作交給分支機構A,然後才能切換到分支機構B,但我不能(不應該)那樣做。

不管你信不信,git stash實際上使提交(有時甚至三)重置他們,讓你轉換分支之前保存您的工作目錄和舞臺。

但是,你實際上可以做一個臨時提交自己。然後切換到分支B,你在那裏工作,當你返回分支A時,你可以繼續。當談到時間來提交你的作品,你可以實際修改臨時提交經:

git commit --amend 

這將改寫分支的管頭承諾,並有將有效沒有臨時未完成的工作,跟蹤你在那裏做。

+0

'兩個提交'中,那些是不可見的? –

+1

@SweetWijerathne有一種方法可以看到他們,但我從來沒有試過這樣做。我的觀點是'git stash'使用commit來堅持你的當前狀態。 –

+0

有趣的信息:)。你能說說命令看看他們嗎?無論如何,如果這些提交在歷史中是不可見的,那我估計沒有任何傷害。不是嗎? –