Gerrit - 当前分支和远程分支有分歧
Gerrit - Current branch and remote branch have diverged
首先,我将我的提交推送到 GERRIT 进行审查
其次,我的队友验证了我的提交并提交到 repo
第三,我用命令git fetch同步,我在查看status
时发现当前b运行ch和远程b运行ch不一致
我想知道它是怎么发生的以及如何避免它,有人可以帮助我吗
所有命令我都有运行
git add app/Http/Controllers/StatisController.php
git commit
git push origin HEAD:refs/for/<remote_branch>
提交提交后
git fetch
git status
我收到如下消息:
在 b运行ch 客户端上
你的 b运行ch 和 'origin/remote_branch' 有分歧,分别有 1 和 1 个不同的提交。
(使用 "git pull" 将远程 b运行ch 合并到你的)
根本原因
根据我们掌握的信息,我们不可能知道,但您的提交可能是由 Gerrit 自动合并或自动重新设置的。更改 automerged/autorebased 取决于每个项目中配置的 submit strategy。要了解项目使用的提交策略,请执行以下操作:
- 单击 项目 > 列表
- 查找项目
- 点击项目名称
- 单击选项卡 常规
- 查看提交类型字段
如何避免此问题
在您的提交合并到远程分支(在 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
在简历中:您的本地分支不应跟随远程分支。
同步当前 b运行ch 的命令是 git pull
。 git pull
等同于 git fetch
+ git merge
。你已经运行git fetch
,所以你可以手动调用git merge
(假设当前b运行ch是master
):
git merge origin/master
或者强行移动b运行ch:
git reset --hard origin/master
或者你可以 运行 pull
:
git pull origin master
如果您的分支出现分歧,您有两种选择。
将远程分支合并到本地分支。这是 git pull
的默认行为,但这将导致创建合并提交并使分支的历史混乱。
将您的本地分支重新定位到远程分支 (git rebase origin/the-branch
)。这是我的首选选项,因为它创建了一个清晰易读的提交历史记录。
首先,我将我的提交推送到 GERRIT 进行审查
其次,我的队友验证了我的提交并提交到 repo
第三,我用命令git fetch同步,我在查看status
时发现当前b运行ch和远程b运行ch不一致我想知道它是怎么发生的以及如何避免它,有人可以帮助我吗
所有命令我都有运行
git add app/Http/Controllers/StatisController.php
git commit
git push origin HEAD:refs/for/<remote_branch>
提交提交后
git fetch
git status
我收到如下消息:
在 b运行ch 客户端上 你的 b运行ch 和 'origin/remote_branch' 有分歧,分别有 1 和 1 个不同的提交。
(使用 "git pull" 将远程 b运行ch 合并到你的)
根本原因
根据我们掌握的信息,我们不可能知道,但您的提交可能是由 Gerrit 自动合并或自动重新设置的。更改 automerged/autorebased 取决于每个项目中配置的 submit strategy。要了解项目使用的提交策略,请执行以下操作:
- 单击 项目 > 列表
- 查找项目
- 点击项目名称
- 单击选项卡 常规
- 查看提交类型字段
如何避免此问题
在您的提交合并到远程分支(在 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
在简历中:您的本地分支不应跟随远程分支。
同步当前 b运行ch 的命令是 git pull
。 git pull
等同于 git fetch
+ git merge
。你已经运行git fetch
,所以你可以手动调用git merge
(假设当前b运行ch是master
):
git merge origin/master
或者强行移动b运行ch:
git reset --hard origin/master
或者你可以 运行 pull
:
git pull origin master
如果您的分支出现分歧,您有两种选择。
将远程分支合并到本地分支。这是
git pull
的默认行为,但这将导致创建合并提交并使分支的历史混乱。将您的本地分支重新定位到远程分支 (
git rebase origin/the-branch
)。这是我的首选选项,因为它创建了一个清晰易读的提交历史记录。