[英]How to git reset an old commit for the purposes of branching off another commit
因此,在PR进行中,我意识到如果我在另一个分支上分支了另一个提交(我们称此提交为A)会容易得多。 简而言之,我当前的PR(称为提交B)取决于该提交(提交A)。
不幸的是,在进行提交B时,我进行了一次提交。 我们将此提交称为B0。 如何在提交提交B0之前进行结帐,以便拥有可以存储的未提交文件? 简而言之,我想将更改保存在提交B0中,分支到提交A,然后将更改保存到提交A1中。 我该怎么做呢?
我还可以摘樱桃吗?
git reset HEAD~
将分支指针返回到最后一个但保留一个提交的工作树,因此您的文件将显示为git status
。 从那时起,您可以隐藏它们并继续。
因此,据我了解,您的历史记录如下:
your pull request
↓
A --- B0 --- B
您实际上希望它看起来像这样:
A --- B0
\
\-- B
↑
updated pull request
在这种情况下,您可以采用多种方式。 一种快速的方法是在A
创建一个新分支,然后选择您的提交:
git checkout -b new_pr A
git cherry-pick old_pr
然后,您可以将新分支推送到旧分支以更新拉取请求。 或者,您可以签出旧分支并将其硬重置为新分支。
您还可以使用交互式变基来简单地从历史记录中删除B0
(如果这是一个好主意,取决于您是否仍然想将B0
用于任何内容)。 为此,只需运行git rebase -i A
,然后在编辑器中删除B0
的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.