Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
跳过提交并在Git中执行_Git_Version Control_Bitbucket - Fatal编程技术网

跳过提交并在Git中执行

跳过提交并在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还原更改即可。或者,

在我的项目中,一个提交引入了一个我无法定位的bug。我想忽略其中的所有内容,并从其他提交继续

Commit1:工作正常

提交2:不起作用。引入了一个bug

Commit3:由于提交2出错而无法工作


我的问题是如何在提交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>
      

      知道这一点,在使用命令时不要犹豫,只要你不推,你就安全了;)

      您可以使用交互式重基从提交历史记录中删除
      commit2
      。详细步骤如下(假设3次提交在
      master
      分支上):

      然后将显示交互式窗口。输入
      i
      并将其更改为:

      pick <commit1 sha-1> commit1 message
      drop <commit2 sha-1> commit2 message
      pick <commit3 sha-1> commit3 message
      
      pick commit1消息
      删除commit2消息
      选择commit3消息
      
      然后输入Esc按钮并输入
      :wq


      现在
      commit2
      已删除,您将发现
      commit3
      的更改基于
      commit1

      您可以使用交互式重新基从提交历史中删除
      commit2
      。详细步骤如下(假设3次提交在
      master
      分支上):

      然后将显示交互式窗口。输入
      i
      并将其更改为:

      pick <commit1 sha-1> commit1 message
      drop <commit2 sha-1> commit2 message
      pick <commit3 sha-1> commit3 message
      
      pick commit1消息
      删除commit2消息
      选择commit3消息
      
      然后输入Esc按钮并输入
      :wq


      现在
      commit2
      被删除,您将发现
      commit3
      的更改基于
      commit1

      您可以恢复提交2。但是如果我这样做,我会丢失提交中的更改,否?@book-否,您不会。(或者更清楚地说:除了您刚才说不想要的更改之外,您不会丢失其他更改;即使这些更改在历史记录中仍然可以看到。)您可以恢复提交2。但是如果我这样做,我会丢失提交中的更改,否?@TheBook-否,您不会。(或者更清楚地说:除了您刚才说不想要的更改之外,您不会丢失其他更改;即使这些更改在历史上仍然可见。)
      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