我的团队使用gerrit来存储源代码,我们都在main
分支(团队的WoW)上开发。这是我正在处理的情况:
1.我在main
中做了一些修改,推送并等待审核。如果此时运行git status
,输出如下所示。
dustin@linux:~/workspace/proj$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
(use "git push" to publish your local commits)
1.我的领导审核了+2,这样我的更改就可以合并到main
(我确认了)。
1.我的队友做了一些改变,这些都是合并后,我(我承认这一点)。
1.我需要推送另一个更改,我运行git pull
。
1.终端打开Vim编辑器,提交消息如下所示
commit 111111111111111111111111111111111111 (HEAD -> main)
Merge: 22222222 33333333
Author: dustin
Date: Tue May 23 00:00:00 2023
Merge branch 'main' of ssh://gerrit.com/proj into main
而2222
是我的变化,3333
是我的队友的变化。
在第5步之后,我期望的结果是只将main
的最新更改更新到我的本地,不需要合并提交。
通常情况下,在git创建了一个合并提交后,我运行git reset --hard HEAD^
,以便将HEAD
移动到3333
,然后运行git pull
,没有“合并提交”发生。这些步骤相当复杂,我认为可以更容易。我该怎么办?
1条答案
按热度按时间qyswt5oh1#
您可能会感到困惑,因为本地机器上的
main
与远程机器上的main
不同,它们只是碰巧被称为相同。pull
是fetch
,然后是merge
,所以你要做的是:main
(到本地远程分支remote/origin/main
),main
。如果这个合并需要一个合并提交,它就会被创建。这是故意的。
我建议修改你的工作流程:不要直接提交到共享分支(
main
)。你也许可以保护在Gerrit的分支。当你想更新你的本地
main
以反映远程的main
时,下面是命令:当你开始做新的事情:
git fetch origin main:main
(这样您的本地main
与远程的main
匹配,避免混淆)git checkout main && git checkout -b new-branch
new-branch
new-branch
推到gerrit或您正在使用的任何工具main
。main
来获取合并后的更改