跳过提交并在Git中执行
在我的项目中,一个提交引入了一个我无法定位的bug。我想忽略其中的所有内容,并从其他提交继续 Commit1:工作正常 提交2:不起作用。引入了一个bug Commit3:由于提交2出错而无法工作跳过提交并在Git中执行,git,version-control,bitbucket,Git,Version Control,Bitbucket,在我的项目中,一个提交引入了一个我无法定位的bug。我想忽略其中的所有内容,并从其他提交继续 Commit1:工作正常 提交2:不起作用。引入了一个bug Commit3:由于提交2出错而无法工作 我的问题是如何在提交2未做更改的情况下签出提交3?如果这是未推送的历史记录,您可以使用git rebase--on commit1 commit2 commit3从历史记录中删除commit2。如果这是已发布的历史记录,则只需使用git revert commit2从commit2还原更改即可。或者,
我的问题是如何在提交2未做更改的情况下签出提交3?如果这是未推送的历史记录,您可以使用git rebase--on commit1 commit2 commit3从历史记录中删除commit2。如果这是已发布的历史记录,则只需使用git revert commit2从commit2还原更改即可。或者,如果您只想在本地暂时使用它,您可以签出commit3,然后执行
git revert commit2-n
,这也会撤消更改,但不会创建提交。如果这是未推送的历史记录,您可以使用git rebase--on commit1 commit2 commit3
从历史记录中删除commit2。如果这是已发布的历史记录,则只需使用git revert commit2从commit2还原更改即可。或者,如果您只想在本地暂时使用它,您可以签出commit3,然后执行git revert commit2-n,这也会撤消更改,但不会创建提交。与git中的大多数操作一样,您可以使用以下几种方法执行此操作:
- 还原错误的提交
git revert <commit2>
知道这一点,在使用命令时不要犹豫,只要你不推,你就安全了;) 与Git中的大多数操作一样,您可以通过以下几种方法完成:- 还原错误的提交
git revert <commit2>
知道这一点,在使用命令时不要犹豫,只要你不推,你就安全了;) 您可以使用交互式重基从提交历史记录中删除
。详细步骤如下(假设3次提交在commit2
分支上): 然后将显示交互式窗口。输入master
并将其更改为:i
pick <commit1 sha-1> commit1 message drop <commit2 sha-1> commit2 message pick <commit3 sha-1> commit3 message
然后输入Esc按钮并输入pick commit1消息 删除commit2消息 选择commit3消息
:wq
现在
已删除,您将发现commit2
的更改基于commit3
您可以使用交互式重新基从提交历史中删除commit1
。详细步骤如下(假设3次提交在commit2
分支上): 然后将显示交互式窗口。输入master
并将其更改为:i
pick <commit1 sha-1> commit1 message drop <commit2 sha-1> commit2 message pick <commit3 sha-1> commit3 message
然后输入Esc按钮并输入pick commit1消息 删除commit2消息 选择commit3消息
:wq
现在
被删除,您将发现commit2
的更改基于commit3
您可以恢复提交2。但是如果我这样做,我会丢失提交中的更改,否?@book-否,您不会。(或者更清楚地说:除了您刚才说不想要的更改之外,您不会丢失其他更改;即使这些更改在历史记录中仍然可以看到。)您可以恢复提交2。但是如果我这样做,我会丢失提交中的更改,否?@TheBook-否,您不会。(或者更清楚地说:除了您刚才说不想要的更改之外,您不会丢失其他更改;即使这些更改在历史上仍然可见。)commit1
git checkout master git rebase -i HEAD~3
pick <commit1 sha-1> commit1 message drop <commit2 sha-1> commit2 message pick <commit3 sha-1> commit3 message
- 还原错误的提交