Git 在I';我已经提交了我的更改
我向u-boot提交了一些更改(我在三次提交中组织了更改),现在我想将第一次提交拆分为两次单独的提交(这是一位审阅者提出的)。我想到的是:Git 在I';我已经提交了我的更改,git,github,Git,Github,我向u-boot提交了一些更改(我在三次提交中组织了更改),现在我想将第一次提交拆分为两次单独的提交(这是一位审阅者提出的)。我想到的是: 从远程克隆我的分支 git重置--硬头~3 重做我的更改,但这次将它们组织为四次提交,而不是三次提交 git-push-f 我的疑问是,在第2步之后,我是否应该有一个额外的git push-f?意思是顺序如下: 1.从远程克隆我的分支 2.git重置--硬头~3 3.git push-f(这是必需的,或者我可以跳过它,继续重做更改,然后再推?)。 4.重做我
提前谢谢 你提出的策略可以奏效,但你必须重做你的工作,这是在你所有其他工作之上的更多工作。所以这不好 根据您的场景,您可以执行以下操作
git重置——软头^
这将重置上次提交,但您将在工作目录中保留所有更改。然后,您只需选择要在一次提交中进行哪些更改,以及在第二次提交中进行哪些更改(从而将上一次提交拆分为两次)。然后你必须用力推
git checkout <sha1>
将更改添加并提交到两个提交中。现在,在这一点上,您已经成功地分割了所需的提交,但是哦,不!除此之外的其他提交如何?你需要一个接一个地挑选那些提交
这些提交不会丢失。您仍然可以在git日志
中找到它们,甚至可以在git reflog
中找到它们。对于这些提交中的每一个,键入git cherry pick
和bam!您已成功地将提交一分为二
现在这里仍然有一个问题。您所在的分支仍然指向旧分支。您只需移动该分支以指向当前的提示。因此,您可以执行git branch-f branch name new tip commit
最后,强制推送您的分支,以便远程服务器有您的新提交,split 你想拆分的提交是最新的还是历史上更久远的?它实际上是第一个,但我看到你已经回答了这两个问题。非常感谢。
git reset --soft HEAD^