gpt4 book ai didi

git - 在我已经提交更改后,如何将提交一分为二

转载 作者:行者123 更新时间:2023-12-05 05:04:05 26 4
gpt4 key购买 nike

我对 u-boot 进行了一些更改(我将更改组织为三个提交),现在我想将我的第一个提交拆分为两个单独的提交(这是审阅者提出的)。这是我想到的:

  1. 从远程克隆我的分支
  2. git reset --hard HEAD~3
  3. 重做我的更改,但这次将它们组织成四次提交而不是 3 次。
  4. git push -f

我的疑问是我是否应该在第 2 步之后有一个额外的 git push -f?含义顺序如下: 1.从远程克隆我的分支 2. git reset --hard HEAD~3 3. git push -f(这是必要的吗,或者我可以跳过它并继续重做我的更改然后推送?)。 4. 重做我的更改,但这次将它们组织成 4 次提交而不是 3 次。 5. 推送

提前致谢。

最佳答案

您提出的策略可以奏效,但您将不得不重做您的工作,这是在您所有其他工作之上的更多工作。所以这不好。

根据您的情况,您可以执行以下操作。

  1. 如果您要拆分的提交是最新的提交(您所做的最后一次提交),那么这很简单:
git reset HEAD^

这将重置您的最后一次提交,但您将在您的工作目录中保留所有更改。然后,您只需选择要在一次提交中进行哪些更改以及在第二次提交中进行哪些更改(从而将您的最后一次提交分成两部分)。然后你将不得不强制推送

  1. 如果您要拆分的提交不是最新的提交,那么事情就会变得有点棘手。

首先,检查要拆分的提交:

git switch --detach <split-commit>

或(旧方法):

git checkout <split-commit>

然后重置您的更改(如第一种情况):

git reset HEAD^

将您的更改添加并提交到两个提交中。现在,此时,您已经成功拆分了所需的提交,但是哦,不!在这个之上的其他提交呢?您需要一个接一个地选择这些提交。这些提交不会丢失。您仍然可以在 git log 甚至 git reflog 中找到它们。对于这些提交中的每一个,键入:

git cherry-pick <next-commit>

砰!您已成功将提交一分为二。

现在这里还有一个问题。您所在的分支仍然指向旧的提示提交。您只需要移动该分支以指向新的提示提交。所以你可以这样做:

git branch --force <branch> HEAD

或:

git switch <branch>
git reset --hard <new-tip-commit>

或(旧方法):

git checkout <branch>
git reset --hard <new-tip-commit>

最后,强制推送您的分支,以便远程拥有您的新提交,拆分!

关于git - 在我已经提交更改后,如何将提交一分为二,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61247852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com