我有一系列提交(20+)属于我想要从我们的主分支和一个单独的分支中删除的特定功能.
我rel_2009_07_18
在提交上有一个tag()代表我们最新的稳定版本,所以当在master上时,git log rel_2009_07_18
..HEAD获取了我想要移动到一个单独分支的提交集.此集中还有一些提交应该保留,但我可以选择那些因为它们很少的提交.
我看过git filter-branch,但是commit选项提到了保留更改但是删除了提交 - 绝对不希望这样.我也看了git rebase,但是也提到了将提交重新应用到上游分支.
是否有一个很好的选择将这些提交移动到一个单独的分支?
我不确定这是否是一个可行的选择以及在分布式(虽然很小)(3个开发人员)环境中的影响.但我可以执行以下小转变......
想法和建议?谢谢!
Jak*_*ski 40
您写道要从'master'分支中删除提交.如果发布'master'分支(好吧,rel_2009_07_18
发布后的提交),并且有人将你的工作基于你的'master',这可能会导致问题.但也许这不是你的问题.
下面的两个解决方案都假设您没有未经修改的更改
$ git checkout master
$ git branch separate_branch
$ git reset --hard rel_2009_07_18
Run Code Online (Sandbox Code Playgroud)
现在'master'位于rel_2009_07_18
标签处,'separate_branch'位于'master'的位置.最终结果与您建议的步骤完全相同(将'master'重命名为'separate_branch',重新创建'master'at rel_2009_07_18
) ,唯一的区别在于reflogs.
$ git checkout master
$ git branch separate_branch
$ git checkout rel_2009_07_18 -- .
$ git clean -df
$ git commit -m 'Reverted to state at rel_2009_07_18'
Run Code Online (Sandbox Code Playgroud)
请注意,此解决方案未经过测试!因人而异.
对我来说最简单的选择是使用git-cherry-pick
.
基本上你需要切换到你想要提交的分支,然后使用原始分支的日志(git log master
),你找到你想要的每个提交的SHA-1,然后将它挑选到当前分支上.
完成后,您可以通过使用git-reset
和嘿presto 回到master并反转所有这些不需要的提交,现在你有了一个包含新提交的分支,以及一个干净的master分支.
归档时间: |
|
查看次数: |
6783 次 |
最近记录: |