我如何将我最近的承诺转移到一个新的分支机构,并在这些承诺完成之前重新定义主? 例如:

master A - B - C - D - E

为此:

newbranch     C - D - E
             /
master A - B 

当前回答

我很惊讶,没有人这样推荐:

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,我们清理后分裂列表项目后最后的承诺

其他回答

你可以做到这一点只是我使用的3个简单步骤。

1)做一个新的分支,你想承诺你最近的更新。

git branch <branch name> 品牌名称

2) 查找最近的承诺 ID 为承诺新分支。

登录

3) 复制的承诺ID 注意,最最近的承诺列表发生在顶部,所以你可以找到你的承诺。

git cherry-pick d34bcef232f6c...

你也可以提供一些承诺ID的范围。

git cherry-pick d34bcef...86d2aec

现在你的工作完成了,如果你选择了正确的ID和正确的分支,那么你会成功,所以在做这件事之前要小心,否则另一个问题可能会出现。

现在你可以按下你的代码

点击Push

这里的大多数解决方案计算了你想回去的承诺数量,我认为这是一个错误的方法,计算需要计算。

你可以简单地通过你想要的承诺的承诺,或者换句话说,你想要的承诺是最后的承诺:

(重定向自Commit Hash)

为了避免这一点:

1) git checkout master

2) git branch <feature branch> master

3) git reset --hard <commit hash>

4) git push -f origin master

如果你是像我这样的人,你正在使用Visual Studio,那么你可以这样做:在我的情况下,我想把最新的承诺交给另一个分支。

右键单击前一个(委托)。

此分類上一篇

因此,所有承诺变更将出现在 Git 变更板上。

此分類上一篇

到您的目标分支或从右下角创建一个新的分支。

此分類上一篇

在“Git Changes”中,双击您的最新 Stash. “Stash details” 面板将被打开. 点击“Pop”,然后解决冲突(如果存在)。

此分類上一篇

最后,做你的改变。

從其他文章中採取一些想法,避免任何與重新安裝有關的事情,並且非常偏見,我的解決方案是:

git 分支 # 更改可在新分支 git 推 # 上传,您可能需要与“--set-upstream”混淆,例如 git 推 --set-upstream https:/// 检查新分支在 git 通过 GUI 破坏现行目录从 git 存储库重新克隆

我不自豪,但我保留了我的数据。

如果你想将你的承诺转移到一个现有分支,它会看起来如下:

git checkout existingbranch
git merge branchToMoveCommitFrom
git checkout branchToMoveCommitFrom
git reset --hard HEAD~3 # Go back 3 commits. You *will* lose uncommitted work.
git checkout existingbranch

警告: 这个方法工作,因为你正在创建一个新的分支与第一个命令: git 分支新分支. 如果你想将承诺转移到一个现有分支,你需要将你的变化融入现有分支之前执行 git 重新设置 --hard HEAD~3 (见移动到一个现有分支上)。

除非有其他情况涉及,否则可以轻松地通过连接和旋转。

# Note: Any changes not committed will be lost.
git branch newbranch      # Create a new branch, saving the desired commits
git checkout master       # checkout master, this is the place you want to go back
git reset --hard HEAD~3   # Move master back by 3 commits (Make sure you know how many commits you need to go back)
git checkout newbranch    # Go to the new branch that still has the desired commits

git reset --hard a1b2c3d4

最后,您可能需要强迫将最新的更改推到主重复:

git push origin master --force

警告: 使用 Git 版本 2.0 及以后,如果您稍后 git 将新分支转移到原始(主)分支上,您可能需要在转移期间明确的 --no-fork-point 选项,以避免失去所承担的承诺。