2016-01-29 71 views
1

這裏是我目前的情況,在枝draft工作:移動分公司一步一回頭離開網點標記提交

* 51c716b (HEAD -> draft, tag: Printed, remote/draft) Dirty squeezing of the draft to be printed on as few pages as possible 
* 9219af9 Draft ready for reading 
* e3366b2 Making progress on the draft 
* 163ab8f (master, remote/master) Create a draft 

現在我有這個Printed版本草案的反饋,我想 繼續進行該項目。顯然,最新的承諾51c716b(標記爲 Printed)並不是我想恢復的那個:我想從 9219af9恢復。但我不想鬆動51c716b

我的下一次提交後應該如何處理這種情況?

* b57cc00 (HEAD -> draft, remote/draft) Integrate feedback from readers. 
| * 51c716b (tag: Printed) Dirty squeezing of the draft to be printed on as few pages as possible 
|/ 
* 9219af9 Draft ready for reading 
* e3366b2 Making progress on the draft 
* 163ab8f (master, remote/master) Create a draft 

(我也希望標籤Printed是可用上remote

注:我知道這會引起麻煩的人已經被拉上draft而它指向51c716b。但我相信沒有人做過這樣的事情;)

回答

1

你可能要找Reset。 Git分支是指向提交的引用,所以你基本上想要將本地引用draft指向9219af9。你可以這樣做:

git reset --hard 9219af9

或者,如果你使用ancestry references

git reset --hard HEAD~1

之後,你可能會創建一個新的提交(在你的榜樣b57cc00)並且您必須更新遠程參考draft(位於origin中的那個)以指向新提交。你可以做到這一點:

git push origin draft --force-with-lease

This會告訴你是知道的遙控器,你是「失去」 51c716b。但是,Git仍然會保留引用指向它的提交,並且由於您在51c716b上有一個標記(也是參考),您將始終可以回到它。確保你把你的標籤,如果你希望其他人(或者你的未來的自己)才能夠訪問它:

git push origin Printed

+1

謝謝:)我是肯定'51c716b'不會被實際上「丟失」 ?我還能用git clone 從另一臺機器取回它嗎? git checkout打印的? –

+0

如果您將標籤推入遙控器,您將會得到。我編輯了包含這些信息的答案。 – alextercete

+0

然後這就是我一直在尋找的東西。謝謝!^^ –