【问题标题】:Git: Unable to remove a "revert' commitGit:无法删除“还原”提交
【发布时间】:2015-06-17 21:45:56
【问题描述】:

我们正在使用 git 工作流程,其中包含用于集成的开发分支和用于单个功能的功能分支。

  1. 通过以下方式创建功能分支:

    git fetch
    git checkout -b new-branch origin/develop
    

(develop 是我们的工作集成分支)

  1. 在新分支上工作,并在准备好创建拉取请求后返回到开发中,并在 github 上创建拉取请求并合并。

    没有合并冲突,现在我们的功能分支仍在开发中

  2. 不得不再做一次拉取请求来调整代码

  3. 在 sprint 结束时,我们通过 github 将新分支从开发中恢复 - 使用拉取请求页面上的恢复按钮。

  4. 当我们尝试恢复第二个拉取请求时,github 无法执行此操作,因此我们通过以下方式手动恢复了此提交:

    git checkout develop
    git fetch
    git merge --ff-only origin/develop
    git revert -m 1 commit ##the commit that was the pull request
    git push
    
  5. 当我们执行上述步骤时,我们(意外地)遇到了合并冲突;我们解决了;现在耶! new-branch 不再开发,我们的提交已恢复。

  6. 现在我们已经发布了,我们希望继续处理 new-branch 并删除 revert,据我们了解,有两种不同的方法可以做到这一点。

    1. 恢复删除拉取请求的提交
    2. 在我们创建新分支之前找出提交并运行

      git rebase -i --no-ff commit
      
  7. 这些都允许我们将 new-branch 重新引入我们的开发分支。

【问题讨论】:

  • 重新拉请求吗?还是还原还原提交?

标签: git merge continuous-integration git-flow revert


【解决方案1】:

如果你的发布分支上有你想要的所有代码,你应该:

  • 如果它具有您需要的所有更改并在该分支上工作,则该分支

  • 合并到develop,如果develop上有你想保留的代码就分支develop

然后你可以删除旧分支

如果您想删除恢复的提交,请不要​​。通常,在 git 中删除或更改提交历史记录是一个坏主意 https://sethrobertson.github.io/GitBestPractices/#pubonce

最后Git Choose Your Own Adventure 是修复 git 愚蠢行为的绝佳资源...

【讨论】:

  • 简而言之,我们将功能分支从开发中恢复,以便我们可以发布,以便我们可以按时发布。现在我们处于一个新的 sprint 中,我们可以继续开发该功能并希望它重新开发。我们想避免使用 push 而是使用 merge,但是没有什么要合并的,因为 git 比较提交 - 这是相同的,因为 revert 是删除代码的提交 - 而不是历史记录。
  • 所以如果你还原还原,会发生什么?
  • 我几乎在每个文件中都遇到了合并冲突
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-01
  • 2011-12-19
  • 2021-12-26
相关资源
最近更新 更多