删除一个git提交但保留更改。

9 浏览
0 Comments

删除一个git提交但保留更改。

我有像这样的提交记录,其中1是最新的,3是最旧的:\n

    \n

  • 提交1
  • \n

  • 提交2
  • \n

  • 提交3
  • \n

\n如何删除提交1和2,但保留更改并提交到提交3

0
0 Comments

在Git中,有时候我们会提交一些错误的更改或者不必要的更改,这时候我们就需要撤销或删除这些提交,但是又不想丢失其他的更改。解决这个问题的方法是使用Git的reset命令。

具体的解决方法如下:

1. 首先,我们可以使用git reset --soft HEAD~2命令将HEAD分支回退到之前的某个提交(最近的一个你想保留的提交)。

2. 然后,只需再次运行git commit命令,并添加你想要保留的更新提交的文件。

3. 如果需要更详细的信息,可以参考下面的链接:Git-Reset Demystified

通过以上步骤,我们可以删除不必要的提交,同时保留其他的更改,避免丢失重要的代码。

0
0 Comments

删除一个git提交但保留更改的问题出现的原因是想要删除最后两个提交并保留更改。解决方法是使用git reset HEAD~2来删除提交。然后,可以对最老的提交进行修改,以包括提交1和提交2的更改:git add --all然后git commit --amend。如果重置两个提交然后修改而不仅仅提交,那么在历史记录中会多出一个提交并影响提交3的父提交。至于one commit too farimpact commit 3 parent的含义,是指如果我们使用git reset HEAD~3而不是2,就会发生这种情况。如果我们只是做一个新的提交,那么它将是提交3,新提交而不是提交3仅包含所有的更改。首先,reset回退2个提交,所以此时HEAD指向提交3。然后,git commit --amend意味着重新做以前的提交,即提交3的父提交。git commit --amend重新做的是当前的提交。我不确定重新做上一个提交会如何工作(因为这样会影响当前的提交),所以每次--amend都会修改2个提交。我在这里检查了一下oreilly.com/library/view/git-pocket-guide/9781449327507/…,它根本不会影响父提交,我想你可能在某个地方读到了错误的关于previous commit的理解,这里的previous commit指的是last commit,而不是last提交的previous。不,但我猜你可能误解了我的评论。当你使用--amend时,你不是在当前提交的基础上提交,而是重新做并替换它。你可以读任何你想读的东西,但这是一个错误的答案。是的,它是在重新做和替换它,所以它将是一个新的提交,但它不会影响父提交,新提交的父提交将与替换的提交的父提交相同。这是否意味着没有办法保留包含所有更改的提交3?所以要么像这个答案那样替换提交3,要么在提交3之后建立一个新的提交,就像下面的答案一样。

0