将分支向后移动一步以留下无分支标记的提交

时间:2016-01-29 13:28:31

标签: git tags branch git-remote revert

这是我当前的情况,在分支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

(我还希望标记Printedremote上可用。)

注意:我知道这会给draft指向51c716b的人带来麻烦。但我相信没有人做过这样的事情;)

1 个答案:

答案 0 :(得分:1)

您可能正在寻找Reset。 Git分支是指向提交的引用,因此您基本上希望将本地引用draft移动到指向9219af9。你可以这样做:

git reset --hard 9219af9

或者,如果您使用ancestry references

git reset --hard HEAD~1

之后,您可能会在示例中创建一个新提交(b57cc00),并且您必须更新远程引用draftorigin中的一个指向新提交的那个。你可以用:

来做到这一点

git push origin draft --force-with-lease

This会告诉遥控器你知道你已经失去了" 51c716b。但是,Git仍然会保留有引用指向它的提交,并且由于您在51c716b上有一个标记(也是一个引用),因此您始终可以返回它。如果您希望其他人(或您未来的自己)能够访问它,请务必按下您的标签:

git push origin Printed

相关问题