使用Git将最新提交移至新分支

马克·尼科洛西

我想将我已承诺掌握的最后几个提交移动到新的分支,并在做出这些提交之前将master重新带回去。不幸的是,我的Git-fu还不够强大,有什么帮助吗?

即我该如何去

master A - B - C - D - E

对此吗?

newbranch     C - D - E
             /
master A - B 
西科拉

移至现有分支

如果要将提交移至现有分支,则它将如下所示:

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

移至新分支

警告:此方法有效,因为您要使用第一个命令创建新分支:git branch newbranch如果要将提交移动到现有分支,则需要在执行之前将所做的更改合并到现有分支中git reset --hard HEAD~3(请参见上方的“移动到现有分支”)。如果您不先合并更改,它们将丢失。

除非涉及其他情况,否则可以通过分支和回滚轻松完成。

# Note: Any changes not committed will be lost.
git branch newbranch      # Create a new branch, saving the desired commits
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

但是,请确保要返回多少次提交。或者,您可以代替HEAD~3,仅提供要在(/当前)分支上“还原回”的提交(或引用,例如origin / master,例如:

git reset --hard a1b2c3d4

* 1您只会从master分支“丢失”提交,但是不用担心,您将在newbranch中拥有这些提交!

警告:在Git 2.0版及更高版本中,如果您git rebase在原始(master)分支上以后再使用新分支,则--no-fork-point在变基过程中可能需要一个显式选项,以避免丢失遗留的提交。拥有branch.autosetuprebase always一套使这个可能性比较大。有关详细信息,请参见John Mellor的答案

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将旧提交移至git中的另一个分支?

将本地提交移至取消主控的本地分支

如何将Git提交移至另一个分支并在原始分支中将其删除?

将分支从主提交移至上一个主提交

混帐| 将旧提交移至另一个分支的过去

将一些更改从Git提交移至单独的提交

将提交移到其他分支

为什么需要git pull来更新(不同的)分支(将分支移至没有git pull的最新提交)?

如果无法合并,是否可以将某些提交移至另一个分支?

将现有的已提交的工作移至git中的新远程分支

将现有未提交的工作移至Git中的新分支

如何在git中将提交移至登台区域?

使用所有较早的信息(例如分支,提交等)将整个存储库移至新位置

如何将某些提交移动到基于git中另一个分支的位置?

git checkout最新分支并返回最新提交

如何将最近(但不是最新)的内容移至新分支

如何将工作移至新分支并删除所有提交历史记录?

Git将Master上未提交的更改放入新分支

将一些提交移动到功能分支,但将其他提交保留在主分支

Git:将最后一次提交从分支移至主节点

将先前的提交移到另一个分支

将提交移动到另一个分支

Git-将旧提交与分支最新提交进行比较

从分支获取最新的Git提交哈希的命令

将具有历史记录的Git分支移至新仓库

Git-将较旧的提交移动到 master 的提示

将分支指针移至其他提交而无需检出

将一些提交从功能分支移至其父级

如何从旧提交创建新的Git分支?