回答

收藏

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

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

我想将我承诺的最后几次提交移动到一个新的分支,并在提交之前将 master 带回。不幸的是,我的 Git-fu 不够强大,有什么帮助吗?: N! M' j2 U6 ^9 ~$ q1 X
也就是说,我怎么能从这里开始" P+ h8 H2 x, s
master A - B - C - D - E到这个?
0 m2 d/ H) l# m0 ?; E( O$ anewbranch     C - D - E        master A - B                 ! I( N% P* V& q0 O! Y$ R8 z+ g
    解决方案:                                                                6 P; W: {$ _1 T! {9 T
                                                                转移到现有分支机构如果您想将提交移动到现有分支,如下所示:% c& k8 ~6 ~3 o" ~" W
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
  n- t0 K( }0 B* N* h& N8 `提交到新的分行警告:*这种方法是有效的,因为使用第一个命令创建一个新的分支:git branch newbranch。移动提交现有分支,实施前需要将变更合并到现有分支git reset --hard HEAD~3(请参阅以上内容移动到现有分支)。*如果不先合并更改,就会丢失。/ N4 k. C9 Y/ B* |$ r
除非涉及其他情况,否则可以通过分支和回滚轻松完成。: a. P! p/ _- o
    # 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 @# S) g; Y& k' j
但一定要确定要返回多少次。或者,你可以取代它HEAD~三、简单提供要在主(/当前)分支恢复提交(或像origin/master例如:
/ |6 L8 e$ b3 E3 D1 f9 K/ C6 T
    git reset --hard a1b2c3d4) l2 N' D8 H4 y  r' C1 J
1 你只会* 丢失master 分支提交,但别担心,你会在 newbranch 有这些提交!) P3 v5 O# a! w, j. i3 H
警告:对于 Git 2.0 和更高的版本,如果你稍后git rebase原始 ( master) 可能需要在分支上创建新的分支--no-fork-point变基期间使用显式选项,避免结转提交丢失。branch.autosetuprebase always一套使这种可能性更大。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则