我们有origin和develop两个分支。
master的初始状态被标记为tag_ABC
。
我们对develop分支进行了一些更改并将其推送到了origin。 然后,我们意外地将develop合并到master并将其推送到origin。
现在,我们想将master还原到检查点tag_ABC
。我们该怎么做?
我们有origin和develop两个分支。
master的初始状态被标记为tag_ABC
。
我们对develop分支进行了一些更改并将其推送到了origin。 然后,我们意外地将develop合并到master并将其推送到origin。
现在,我们想将master还原到检查点tag_ABC
。我们该怎么做?
你可以做
git checkout master
git reset --hard tag_ABC
git push --force origin master
master
的其他开发人员需要执行以下操作:git pull
git reset --hard origin/master
这不是对问题的直接回答,但当搜索如何将分支代码还原到标签发布时,此页面会出现。
另一种方法是创建当前分支状态和要还原到的标签之间的差异(diff),然后将其应用于该分支。这将保持版本历史记录正确,并显示变更进入再次退出的情况。
假设您的分支名为master,您要返回的标签名为1.1.1。
git checkout 1.1.1
git diff master > ~/diff.patch
git checkout master
cat ~/diff.patch | git apply
git commit -am 'Rolled back to version 1.1.1'
git push origin master
$ cat ../diff_qa.patch | git apply
:55: 尾随空格。
:336: 尾随空格。
:12692: 尾随空格。
:12695: 尾随空格。
{{ $tag['rank']+1 }}:
<stdin>:12706: 尾随空格。
git push --force origin master
。 - danzagit reset --hard HEAD^
。 - Geoffgit reset --hard HEAD^
可以多次使用,每次可以回退一个提交,然后如果它在远程上,可以使用git push --force origin master
。 - Luke Wenkegit pull
和git reset --hard origin/master
。 - Luke Wenke