git - 使用仍在审查中的 Cherry pick 推送代码以供审查的工作流

我对在线阅读的所有内容感到有点困惑,所以也许我可以通过解释我想做什么来获得更清晰的答案。

这是我拥有的: - 提交 A 有一些我和其他人需要的 API 更新。 - 提交 A 仍在审查中,因此尚未 merge 到 master 分支。因此,我现在还不能执行 git fetch/merge/pull 来获取这些更新。

我们想要做的是获取该代码,即使它仍在审查中,然后继续我们依赖于它的工作。我试过 cherry-pick ,然后根据需要工作。没有问题,直到我决定我准备好提交并推送我的代码以供审查。

我看到两个选项: 1: 暂时不要提交我的代码,只是让它藏起来。等到 Commit A 被 merge 。然后我必须以某种方式撤消我的 cherry-pick,因为 Cherry-picking 创建了一个新的提交。然后我执行 git fetch/merge/pull,unstash 我的代码,提交我的更改,然后提交我的代码。

2: 有没有办法提交我的代码并简单地让它依赖于 Commit A 被 merge ?我不能简单地使用 cherry-pick 推送我的代码,我收到一条错误消息,指出 cherry-pick 代码没有被更改。

  • 我将如何执行上述任一操作?
  • 一种选择比另一种更可取吗?
  • 我应该采用与上述方法不同的方法吗?如果是,是什么?

最佳答案

如果我没记错的话(已经一年了),我相信如果你做(1)( cherry-pick ,藏起来,等到审查通过),如果你 pull 出现在 merge 的代码,然后 pop 藏,然后在新的 merge 代码之上对其进行 rebase (假设您现在有两个不同的分支),它应该保留您所做的更改,然后您可以提交这些更改。

您必须小心不要丢失精心挑选的代码(确保将其 stash 起来,否则如果您更改分支,您可能会丢失代码)。

问题可能是在代码审查期间更改了某些内容并且您有旧版本的“提交 A”。当您尝试将您的更改放在它之上(新的 merge 代码)时,您可能会遇到 merge 冲突(取决于您如何 rebase )。我建议获取 GitExtensions,以便在执行诸如存储然后 pull 之类的操作时直观地查看代码如何分支。

我建议在单独的分支上测试我上面建议的方法,并先了解它是如何工作的,然后再在您正在开发的实际代码上尝试它。

https://stackoverflow.com/questions/31528014/

相关文章:

cmake - 带有特殊字符的 custom_command ECHO

sql - 如何在 SQL MS Access 2013 中根据文本特征标准和 n+1、n+2、n+

java - 如何在不同网络的 NAT 后面的两个客户端之间建立 TCP 连接?

wpf - 右键单击 + 左键单击被视为拖放

facebook - Graph Facebook 发生未知错误

javascript - 使用 python 电子邮件或其他模块在电子邮件中发送 Bokeh 图

java - 如何在 Spring 批处理的作业上下文 xml 文件中使用 jobExecution

asp.net - executionTimeout 发送响应

session - CakePHP 3 丢失身份验证 session

android - AlertDialog 内的 DatePickerDialog(在特定的 Edi