如何在Git补丁集之间切换



我对git相对陌生,正在寻找与git命令相关的反馈,以便在补丁集之间切换。这是我的场景:

我在树枝上";测试";以及处理同一分支上的特定变更集(由另一用户创建(。我从中提取了第三个补丁集并开始工作。现在,在同一时间,同一开发人员在同一文件上放置了第四个补丁集,并进行了一些更改。现在,建议使用什么GIT命令来移动到第4个补丁集(同时避免合并冲突(并保留我在最新补丁集上的工作?

我只是试着从Gerrit为那个变更集运行PULL命令,但它导致了合并冲突。请提供建议。提前谢谢你。

  1. 提交您的更改并记录提交的SHA1
  2. 获取第4个补丁集并用--hard重置为FETCH_HEADgit fetch origin refs/changes/xx/yyyxx/4 && git reset FETCH_HEAD --hard
  3. 应用您的承诺。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个补丁集。

在这种情况下,我会这样做:

  1. 提交我的更改
  2. 使用签出分支命令git fetch "ssh://gerrit.mycorp.net:29418/my-project" refs/changes/21/6121/4 && git checkout -b change-6121-4 FETCH_HEAD
  3. 回扣,或者在新的分支机构上挑选零钱,然后继续工作

一般来说,对于Gerrit,我不建议使用pull命令,因为这几乎总是会导致合并冲突,当你想稍后提交更改时,这会使生活更加困难

最新更新