Gerrit - 当前的分支和远程分支已经分歧

时间:2017-10-23 09:01:31

标签: git branch gerrit

首先,我将我的提交推送到GERRIT进行审核

其次,我的队友验证了我的提交并提交回购

第三,我与命令git fetch同步,当我检查状态时,我发现我当前的分支和远程分支已经分歧

我想知道它是如何发生的以及如何避免它,有人可以帮助我

我运行的所有命令

executeCargoCommandInTerminal

git add app/Http/Controllers/StatisController.php

git commit

提交提交后

git push origin HEAD:refs/for/<remote_branch>

git fetch

我得到的信息如下:

在分支机构客户端上 您的分支机构和&quot; origin / remote_branch&#39;有分歧,分别有1和1个不同的提交。

(使用&#34; git pull&#34;将远程分支合并到你的分支中)

3 个答案:

答案 0 :(得分:1)

根本原因

根据我们知道的信息,我们无法知道,但是,您的提交可能是由Gerrit自动修改或自动修复的。根据每个项目中配置的submit strategy,更改是自动充电/自动重排的。要了解项目使用的提交策略,请执行以下操作:

  1. 点击 项目 &gt;的 列表
  2. 找到项目
  3. 点击项目名称
  4. 点击标签 常规
  5. 请参阅 提交类型 字段
  6. 如何避免此问题

    在提交在远程分支中合并(在Gerrit上提交)之后忘记本地分支(删除它们)并始终启动新分支以处理新的更改。

    处理改变1

    git fetch
    git checkout -b LOCAL-1 /origin/REMOTE
    # Work on the change
    git add .
    git commit
    git push origin HEAD:refs/for/REMOTE
    

    如果您想处理变革2:

    git fetch
    git checkout -b LOCAL-2 /origin/REMOTE
    # Work on the change
    git add .
    git commit
    git push origin HEAD:refs/for/REMOTE
    

    如果您需要重做更改1:

    git checkout LOCAL-1
    # Rework the change
    git add .
    git commit --amend
    git push origin HEAD:refs/for/REMOTE
    

    在Gerrit上合并(提交)更改1时

    git branch -D LOCAL-1
    

    简历中:您的本地分支机构不应该跟随远程分支机构。

答案 1 :(得分:1)

如果你的分支有分歧,你有两个选择。

  1. 将远程分支合并到本地分支。这是git pull的默认行为,但这会导致创建合并提交并使分支的历史记录混乱。

  2. 将您的本地分支重新定位到远程分支(git rebase origin/the-branch)。这是我的首选选项,因为它创建了一个简洁易读的提交历史记录。

答案 2 :(得分:0)

同步当前分支的命令是git pullgit pull相当于git fetch + git merge。您已经运行git fetch,因此您可以手动调用git merge(假设当前分支为master):

git merge origin/master

或者你可以强行移动分支:

git reset --hard origin/master

或者你可以运行pull

git pull origin master