我想将Git标签之后的所有提交都转换为分支,以便从该标签重新开始主文档,然后再从该分支发出拉取请求。
我想从标签重新开始,并释放一些机会,直到当前变化稳定为止。 这是某种可以解决问题的rebase命令吗? 任何具体的例子将不胜感激
我可以从标记中签出,也可以从中签出,但是恰恰相反,这确实是有道理的:我们应该从母版中分支而不是提交。
Thx
答案 0 :(得分:1)
据我了解,您的情况如下:
mytag
。master
之后,您在mytag
中有几个命令。所有这些提交都已推送到远程。如果我对您的理解正确,那么您需要做几件事:
mytag
(即您的本地计算机)和master
(即您的远程存储库)中都看到origin/master
之后的提交。mytag
之后的所有提交保留在单独的分支(即newbranch
)中。如果我正确描述了您想要的内容,请执行以下命令:
# Switch to latest commit in master:
$git checkout master
# Create new branch:
$git checkout -b newbranch
# Switch back to master:
$git checkout master
# Reset master to "mytag":
$git reset --hard mytag
# Apply changes in master to origin/master:
$git push -f
请注意,最后一个命令(git push
)是通过“强制”选项(-f
)执行的。该选项允许删除远程中的提交。我强烈建议您阅读有关此选项的git文档。
注意:带有{force}选项的git push
仅在您是项目中的单个开发人员时应用。如果您的项目中有多个贡献者,我强烈劝阻您不申请git push -f
,因为它可能会破坏您同事的本地存储库中的提交历史记录。如果有多个贡献者,那么将其保持现状可能是最好的解决方案。
答案 1 :(得分:0)
您可以按照以下步骤从指定的标签创建分支。
git branch new_branch tag_name
git log
将显示如下。
commit 5ad3849a9de65d9180c1242c7148cc10148xxxxx (HEAD -> feat)
commit ae4b6bb01a74d0f2d8a7c53fe9781186bb2xxxxx (tag: v1, new_branch)
答案 2 :(得分:0)
要为所有标签创建分支,例如从v1.0
到branch_v1.0
,
git push . refs/tags/*:refs/heads/branch_*
或
git for-each-ref refs/tags --format="%(refname:lstrip=2)" | while read tag;do
git branch branch_$tag;
done