如何为了分支另一个提交而重置旧提交

时间:2017-06-06 22:15:31

标签: git

所以,在PR的中途,我意识到如果我在另一个分支上分支另一个提交(让我们调用此提交A),这将会容易得多。简而言之,我当前的PR(称为此提交B)依赖于该提交(提交A)。

不幸的是,在提交B时,我做了一次提交。让我们调用此提交B0。如何在我提交提交B0之前签出,以便我有可以存储的非提交文件?简而言之,我想从提交B0中隐藏我的更改,分支提交A,并将我的更改存储到提交A1。我该怎么做?

我还可以挑选吗?

2 个答案:

答案 0 :(得分:0)

git reset HEAD~返回分支指针,指向最后一个提交保留工作树,以便您的文件在git status中显示为已修改。从那时起,你可以存储它们并继续。

答案 1 :(得分:0)

因此,根据我的理解,您的历史记录如下:

       your pull request
             ↓
A --- B0 --- B

你实际上希望它看起来像这样:

A --- B0
 \
  \-- B
      ↑
updated pull request

在这种情况下,您有多种方法可以这样做。一个非常快速的方法是从A关闭新的分支并挑选你的提交:

git checkout -b new_pr A
git cherry-pick old_pr

然后,您可以将新分支推送到旧分支以更新请求。或者你检查你的旧分支并将其硬重置为新分支。

您还可以使用交互式rebase从历史记录中删除B0(如果这个好主意取决于您是否仍想将其用于任何事情)。为此,只需运行git rebase -i A,然后在编辑器中删除B0

的行