我对git相对陌生,正在寻找与git命令相关的反馈,以便在补丁集之间切换。这是我的场景:
我在树枝上";测试";以及处理同一分支上的特定变更集(由另一用户创建(。我从中提取了第三个补丁集并开始工作。现在,在同一时间,同一开发人员在同一文件上放置了第四个补丁集,并进行了一些更改。现在,建议使用什么GIT命令来移动到第4个补丁集(同时避免合并冲突(并保留我在最新补丁集上的工作?
我只是试着从Gerrit为那个变更集运行PULL命令,但它导致了合并冲突。请提供建议。提前谢谢你。
- 提交您的更改并记录提交的SHA1
- 获取第4个补丁集并用
--hard
重置为FETCH_HEAD
。git fetch origin refs/changes/xx/yyyxx/4 && git reset FETCH_HEAD --hard
- 应用您的承诺。
git cherry-pick <your_commit>
。解决合并冲突(如果有(
为了使其更具可跟踪性,您可以为第4个补丁集创建另一个分支,并在其上应用提交。git fetch origin refs/changes/xx/yyyxx/4 && git checkout -b foo FETCH_HEAD && git cherry-pick <your_commit>
。
你可能想用你的修改来修改第四个补丁集。如果是这样,在git cherry-pick
之后,可以使用git reset HEAD^ --soft && git commit --amend
创建新的补丁集。这里,HEAD^
是指第4个补丁集。
在这种情况下,我会这样做:
- 提交我的更改
- 使用签出分支命令
git fetch "ssh://gerrit.mycorp.net:29418/my-project" refs/changes/21/6121/4 && git checkout -b change-6121-4 FETCH_HEAD
- 回扣,或者在新的分支机构上挑选零钱,然后继续工作
一般来说,对于Gerrit,我不建议使用pull命令,因为这几乎总是会导致合并冲突,当你想稍后提交更改时,这会使生活更加困难