繁体   English   中英

如何使用git重置旧提交以分支另一个提交

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM