我如何将我最近的承诺转移到一个新的分支机构,并在这些承诺完成之前重新定义主? 例如:
master A - B - C - D - E
为此:
newbranch C - D - E
/
master A - B
我如何将我最近的承诺转移到一个新的分支机构,并在这些承诺完成之前重新定义主? 例如:
master A - B - C - D - E
为此:
newbranch C - D - E
/
master A - B
当前回答
從其他文章中採取一些想法,避免任何與重新安裝有關的事情,並且非常偏見,我的解決方案是:
git 分支 # 更改可在新分支 git 推 # 上传,您可能需要与“--set-upstream”混淆,例如 git 推 --set-upstream https:/// 检查新分支在 git 通过 GUI 破坏现行目录从 git 存储库重新克隆
我不自豪,但我保留了我的数据。
其他回答
这里的大多数解决方案计算了你想回去的承诺数量,我认为这是一个错误的方法,计算需要计算。
你可以简单地通过你想要的承诺的承诺,或者换句话说,你想要的承诺是最后的承诺:
(重定向自Commit Hash)
为了避免这一点:
1) git checkout master
2) git branch <feature branch> master
3) git reset --hard <commit hash>
4) git push -f origin master
在一般...
由 sykora 曝光的方法是最好的选择,但有时不是最简单的方法,而且不是一般的方法。
为了实现OP想要的,它的2步过程:
步骤1 - 注意你想要的新行业的主人的承诺
执行
git checkout master
git log
在这里我将使用: C 承诺: 9aa1233 D 承诺: 453ac3d E 承诺: 612ecb3
注意:您可以使用前七个字符或整个承诺字符。
步骤2 - 把它们放在新行业
git checkout newbranch
git cherry-pick 612ecb3
git cherry-pick 453ac3d
git cherry-pick 9aa1233
或(在 Git 1.7.2 + 上,使用范围)
git checkout newbranch
git cherry-pick 612ecb3~1..9aa1233
git cherry-pick 适用于新行业的这三个承诺。
只有在这种情况下:
Branch one: A B C D E F J L M
\ (Merge)
Branch two: G I K N
我表演了:
git branch newbranch
git reset --hard HEAD~8
git checkout newbranch
我希望承诺我会成为头,但承诺是现在的。
要确保在历史上登上正确的位置,就更容易与承诺的哈希工作。
git branch newbranch
git reset --hard #########
git checkout newbranch
你可以做到这一点只是我使用的3个简单步骤。
1)做一个新的分支,你想承诺你最近的更新。
git branch <branch name> 品牌名称
2) 查找最近的承诺 ID 为承诺新分支。
登录
3) 复制的承诺ID 注意,最最近的承诺列表发生在顶部,所以你可以找到你的承诺。
git cherry-pick d34bcef232f6c...
你也可以提供一些承诺ID的范围。
git cherry-pick d34bcef...86d2aec
现在你的工作完成了,如果你选择了正确的ID和正确的分支,那么你会成功,所以在做这件事之前要小心,否则另一个问题可能会出现。
现在你可以按下你的代码
点击Push
我很惊讶,没有人这样推荐:
git checkout master
git checkout <commit hash from which you want to split>
git checkout -b new_branch
git rebase master
git checkout master
git reset --hard <commit hash you splitted>
要解释:
步骤我们检查的承诺,我们想要分裂,然后从这个承诺创建一个新的分支,做 rebase 将同步 new_branch 和 master. 因此,现在我们有两个相同的分支与同样的承诺重新设置在 master,我们清理后分裂列表项目后最后的承诺