Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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 如何将分支升级到旧Gerrit提交的最新分支_Git_Gerrit - Fatal编程技术网

Git 如何将分支升级到旧Gerrit提交的最新分支

Git 如何将分支升级到旧Gerrit提交的最新分支,git,gerrit,Git,Gerrit,我有三个从属Gerrit提交,在合并到主分支之前需要进行一些更改 犯 提交B(取决于A) 提交C(取决于B) 问题是,自从添加了这三个提交之后,我的主人发生了显著的变化。我怀疑我应该更新这三个提交所基于的基础,然后进行更改和修改,但我不确定这是否是我应该做的实际场景 我想从A到C一个接一个地进行更改,然后提交回来。我确实下载了>签出>复制到bash以获得提交的分离头,但是当我尝试运行它时,我得到了很多错误,我在提交此代码时没有遇到这些错误 我不确定我应该做些什么来将这些更改单独添加到所有三个

我有三个从属Gerrit提交,在合并到主分支之前需要进行一些更改

  • 提交B(取决于A)
  • 提交C(取决于B)
问题是,自从添加了这三个提交之后,我的主人发生了显著的变化。我怀疑我应该更新这三个提交所基于的基础,然后进行更改和修改,但我不确定这是否是我应该做的实际场景

我想从A到C一个接一个地进行更改,然后提交回来。我确实下载了>签出>复制到bash以获得提交的分离头,但是当我尝试运行它时,我得到了很多错误,我在提交此代码时没有遇到这些错误

我不确定我应该做些什么来将这些更改单独添加到所有三个分支中,然后合并到基本分支中

为什么这很重要? 因为我的代码正在调用某个后端服务,该服务更改了某些类型,并且新的主服务器正确定义了新的类型,而过时的Gerrit提交仍然使用具有无效属性的旧类型等

我真正想做什么? 我想我实际上想做什么来改变我三次提交的基础,使之基于最新的主提交,而不是一些旧的主提交。或者我只是误解了我应该做什么

编辑 我尝试过一些东西,我想知道这是否是可能的方法之一? 这显然让我的“承诺A”超越了当前的大师级人物:

git checkout master
// we're mostly rebasing
git pull origin --rebase
// copied command from gerrit
git fetch ... && git checkout FETCH_HEAD
git rebase master
在我添加了一个补丁来提交a之后,我可能也应该对B和C提交执行相同的步骤

似乎类型现在已经更新,我可以更新分离的头部。我还没有修改我的提交,因为我希望得到某种形式的确认,这将完成我打算做的事情。

执行以下操作

  • git获取
  • 委员会

  • git结帐-b分行a委员会
  • git重新基址源/主
  • 解决冲突
  • git提交--修改
  • git推送源分支\u a:主
  • 委员会

  • git签出-b分支机构/委员会
  • 吉特再基地分公司
  • 解决冲突
  • git提交--修改
  • git推送源分支\u b:主
  • 委员会

  • git结帐-b分行c委员会
  • 吉特再基地分公司
  • 解决冲突
  • git提交--修改
  • git推送源分支\u c:master
  • 注1:您可以尝试使用Gerrit UI上的“Rebase”按钮执行此过程,但如果存在冲突,则此操作将不起作用

    注2:您可以在过程结束时删除分支。毕竟,它们不是真正需要的,如果您只使用正确的提交ID,那么一切都会很好地工作


    注3:避免以这种方式工作。尽量不要基于非集成(已审核/批准/提交)提交将提交推送到Gerrit。始终尝试使用“并行”提交。

    听起来像是您想要执行的
    git checkout master;git-checkout-b东西;吉特樱桃采摘委员会;吉特樱桃采摘委员会;吉特樱桃皮克委员会;git签出主机;git merge stuff
    ,解决过程中出现的冲突,或者简单地重新设置现有分支的基础。我不使用gerrit,但假设它不会从根本上改变git的使用方式。@AD7six如果你认识gerrit,我应该通过在UI中编辑cherry pick链接来选择我的提交吗?我不认识gerrit,但答案几乎肯定是肯定的。关于注3。通常情况下,我总是在进行Gerrit review中的新代码更改之前进行一次git重置--hard HEAD~1。但有时提交是相关的,它们应该是串行的而不是并行的,因为一个提交实际上依赖于另一个提交的代码。我正在处理的这三个案例就是这样一个问题。根据我问题中的编辑,我在哪里成功地重新设置了最新的master,这难道不简单吗?因此,基本上,当我修改代码并修改提交时,B和C会工作吗?因为A的基础已经被设置为最新的?不,你会在最新的提交中创建A,但B和C将保持在A的基础上。