回答

收藏

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

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

我想将我承诺的最后几次提交移动到一个新的分支,并在提交之前将 master 带回。不幸的是,我的 Git-fu 不够强大,有什么帮助吗?8 Q" @( ]$ [/ i# Q- {9 W3 p9 X/ m
也就是说,我怎么能从这里开始
, ]8 U  j' ]2 z6 H/ ^% q/ @master A - B - C - D - E到这个?4 M5 p5 H" [, q  r( e
newbranch     C - D - E        master A - B                 8 H3 p6 _3 e* v  v" G3 A
    解决方案:                                                                1 P3 t, O8 o: x0 b1 C
                                                                转移到现有分支机构如果您想将提交移动到现有分支,如下所示:
) d# g5 v+ o& k8 R7 bgit 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 pop8 {" w9 `& L0 ?! a. D
提交到新的分行警告:*这种方法是有效的,因为使用第一个命令创建一个新的分支:git branch newbranch。移动提交现有分支,实施前需要将变更合并到现有分支git reset --hard HEAD~3(请参阅以上内容移动到现有分支)。*如果不先合并更改,就会丢失。
8 m& b! i: ~* F6 L5 B除非涉及其他情况,否则可以通过分支和回滚轻松完成。$ I+ I) ~  ~5 }7 j
    # 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  Q1 {. Z' i  l. v, b8 s# |
但一定要确定要返回多少次。或者,你可以取代它HEAD~三、简单提供要在主(/当前)分支恢复提交(或像origin/master例如:
7 V, D- W# J' M) t: ?
    git reset --hard a1b2c3d4
    0 Z4 H, S0 P" `9 e0 H
1 你只会* 丢失master 分支提交,但别担心,你会在 newbranch 有这些提交!& D. O; {: i4 t3 P, R! b; {- a) F, f
警告:对于 Git 2.0 和更高的版本,如果你稍后git rebase原始 ( master) 可能需要在分支上创建新的分支--no-fork-point变基期间使用显式选项,避免结转提交丢失。branch.autosetuprebase always一套使这种可能性更大。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则