"checkout merge its dependencies" 以什么方式以及在什么情况下应该使用它来代替 cherry picking?

In what way does "checkout merge its dependencies" and in what cases should it be used instead of cherry picking?

我使用 gerrit。我已经获取了一个远程存储库。现在我有两个选择 checkoutcherry-pick。我已经尝试了第二个选项(cherry-pick),并且我以这种方式得到的结果看起来像我想要的那样(在我的本地存储库中,我看到了我对代码的更改以及我提交的提交引入的更改已获取并精心挑选)。

但是,我的同事坚持认为我需要 checkout,因为 "checkout also merges its dependencies"。我已尝试签出,但结果是,我没有在代码中看到我的更改(我只看到远程提交引入的更改,我已获取并签出)。这种行为对我来说也是有意义的(我只是将存储库的 HEAD 放到另一个 "line of changes",就像我完全切换到另一个早午餐一样,因此我看不到那里从我的原始分支更改,我在那里进行了所有更改)。

现在,我想了解我的同事想从我这里得到什么。为什么我应该结帐以及应该如何完成(使用什么命令顺序)?我是否应该首先为我将检出的远程更改创建一个新分支?我应该将这个新分支与我的更改合并到我的分支中吗?

Checkout 不会 合并任何东西(除非你使用 git checkout -m,但你的问题中没有暗示你打算使用 -m) .您提到的那种 git checkoutgit checkout <commit>,只是检查指定的提交。如果 <commit> 参数不是本地分支名称,则结果是 "detached HEAD" 并且您通常必须最终 运行 git checkout <branch-name> 返回到某个命名分支。

作为,你可能真的想在这里使用git merge。或者你可能不会:这取决于你想要达到的目标。我们无法读懂您同事的想法(您也无法读懂),也无法告诉您他认为您应该在这里取得的成就。但是你对 git checkout.

的描述是正确的

请注意,如果您想创建一个本地分支名称,指向由 refs/changes/xx/yyyy/z 标识的同一提交,但可用作您自己的分支,您可以使用:

git checkout -b new-branch-name refs/changes/xx/yyyy/z

如果您只想将该提交作为当前提交(这样您就可以,例如,运行对其进行一些测试或查看其快照),您可以使用通过签出获得的分离 HEAD以该名称或其哈希 ID 提交。