【问题标题】:Creating a git branch for previous commits: what's the best way to do it?为以前的提交创建一个 git 分支:最好的方法是什么?
【发布时间】:2011-10-13 11:50:50
【问题描述】:

想象一下:

  • 在“开发”分支上完成了一堆相关的提交
  • 这些提交实际上应该在“feature_x”分支中完成
  • “feature_x”分支应合并到“开发”分支中

图表示例:

目前情况:

development (HEAD) A--B--C--D--E

期望的情况:

development         A--B
                        \
feature_x                C--D--E 

如何创建此功能分支,将这些以前的提交分组到分支中,并使“开发”分支看起来像没有对它进行过单独的提交?

【问题讨论】:

标签: git version-control branch


【解决方案1】:

你真的不需要太多:

git checkout devel
git checkout -b feature_x
# now devel and feature_x refer to commit E
git branch -f devel <hash of commit B>
# now you're still on feature_x, but devel is at commit B

【讨论】:

  • 第三条命令重命名devel;我想你的意思是-f 不是-m
【解决方案2】:
A--B--C--D--E(dev branch)
\
 \
   F--G(feature branch)

我假设你想变成这样

A--(dev branch)
\
 \
   F--G--B--C--D--E(feature branch)

您可以使用git rebase 来执行此操作

在开发分支的头部 为 rebase 目的创建一个临时分支

git branch temp
git rebase feature_branch

移动你的开发分支来提交 A

git checkout dev_branch
git reset --hard <shasum of A>

将你的功能分支移动到提交 E 并删除临时分支

git checkout feature_branch
git reset --hard <shasum of E>
git branch -D temp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多