git rebase创建新分支并保留原始分支

时间:2014-05-19 11:21:19

标签: git

我有一种情况,我必须在很长一段时间内维持两个分支机构,并且'合并'没有吸引力,因为只有选择性的改变才能来回传递。所以我学会了使用樱桃挑选。然而,另一个替代方案发生在我身上,但我担心rebase命令缺乏必要的选择。

git rebase创建一组新提交,然后移动分支标签指向最后一个。我认为我想要的很简单:我想单独留下旧的分支标签,并创建一个全新的分支标签。我假设的工作流程是使用这种机制创建一个单独的,压扁的提交,用于挑选樱桃,而不会重写其他人看到的历史记录。

我发现的近似值是在克隆中创建克隆,rebase -i,重命名分支,并将结果推回。有没有办法直接使用我缺少的git rebase?

2 个答案:

答案 0 :(得分:3)

如果您在要保留的分支上,可以从当前HEAD创建一个新分支

git fetch
git branch backup_of_feature_ABZ
git rebase -i origin/master # if you are rebasing onto master
# then you can just squash or pick the change you want and you keep your "backup branch"
# Which makes good sense since it is backup and you did deliver the squashed commit. 

我希望我能正确理解你的问题

答案 1 :(得分:1)

如果您总是想为多次提交创建单个压缩提交,那么您仍然可以使用cherry-pick

以下命令链会压缩给定分支的最后三个提交:

git cherry-pick -n <branch>...<branch>~3
git commit -m "Squash 3 commits from <branch>"

git cherry-pick -n代表--no-commitdocumentation),它将所有更改应用于您的工作树,而不进行提交(显然)。

您可以使用shell函数轻松地为此创建别名。

希望有所帮助。