回答

收藏

使用 Git 将最近的提交移动到新分支

技术问答 技术问答 381 人阅读 | 0 人回复 | 2023-09-11

我想将我承诺的最后几次提交移动到一个新的分支,并在提交之前将 master 带回。不幸的是,我的 Git-fu 不够强大,有什么帮助吗?# f$ |: P4 i- {, u' T8 U
也就是说,我怎么能从这里开始, y- h. N/ a" {( x( ?
master A - B - C - D - E到这个?
/ ~" R/ d( y, i2 w/ Knewbranch     C - D - E        master A - B                 9 i4 j0 _! w( ]1 z
    解决方案:                                                                2 ?& q# j' x# v: g
                                                                转移到现有分支机构如果您想将提交移动到现有分支,如下所示:; E2 G+ v# p; U% u6 _; X7 @
git checkout existingbranchgit merge mastergit checkout mastergit reset --hard HEAD~3 # Go back 3 commits. You *will* lose uncommitted work.git checkout existingbranch在执行此操作之前,您可以使用它git stash. 完成后,您可以使用以下命令检索隐藏的未提交编辑git stash pop
  ^: l7 u! q+ `" A, k提交到新的分行警告:*这种方法是有效的,因为使用第一个命令创建一个新的分支:git branch newbranch。移动提交现有分支,实施前需要将变更合并到现有分支git reset --hard HEAD~3(请参阅以上内容移动到现有分支)。*如果不先合并更改,就会丢失。
6 F3 T8 ~/ c/ {除非涉及其他情况,否则可以通过分支和回滚轻松完成。
6 u& @( c. N/ C- M' `+ z
    # Note: Any changes not committed will be lost.git branch newbranch      # Create a new branch,saving the desired commitsgit 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
    0 ]7 G% e9 u/ J5 M+ p/ w
但一定要确定要返回多少次。或者,你可以取代它HEAD~三、简单提供要在主(/当前)分支恢复提交(或像origin/master例如:
. n2 z- R7 ~: I6 Z6 ^
    git reset --hard a1b2c3d41 o3 Y3 y( N+ ^
1 你只会* 丢失master 分支提交,但别担心,你会在 newbranch 有这些提交!6 J, w! {; h' c
警告:对于 Git 2.0 和更高的版本,如果你稍后git rebase原始 ( master) 可能需要在分支上创建新的分支--no-fork-point变基期间使用显式选项,避免结转提交丢失。branch.autosetuprebase always一套使这种可能性更大。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则