我用gerrit。我已经获取了一个远程存储库。现在我有两个选项checkout
或cherry-pick
。我已经尝试了第二个选项(cherry-pick
),我得到的结果看起来像我想的那样(在我的本地存储库中,我看到我对代码的更改以及我提交的更改所引入的更改已取得并采摘樱桃。)
但是,我的同事坚持认为我需要checkout
,因为“checkout还会合并其依赖项”。我试图检查,但结果是,我没有看到代码中的更改(我只看到远程提交引入的更改,我已经获取并检出)。这种行为对我来说也很有意义(我只是将存储库的HEAD放到另一个“变化线”上,就像我切换到完全另一个早午餐,因此,我没有看到那里从我原来的分支改变,我做了所有的改动。)
现在,我想了解我的同事对我的要求。我为什么要结帐以及应该如何完成(使用什么顺序的命令)?我应该首先为远程更改创建一个新分支,我将检查吗?我应该将这个新分支合并到我的分支中吗?
答案 0 :(得分:3)
结帐没有合并任何内容(除非您使用git checkout -m
,但您的问题中没有提示您打算使用-m
)。你提到的git checkout
git checkout <commit>
,<commit>
只是检查指定的提交。如果git checkout <branch-name>
参数不是本地分支名称,则结果是&#34;分离的HEAD&#34;通常,您必须最终运行git merge
以返回某个命名分支。
作为ElpieKay noted in comments,您可能真的想在这里使用git checkout
。或者你可能不会:这取决于你想要达到的目标。我们无法读懂你同事的想法(比你更多),也无法告诉你他认为你应该在这里实现什么。但您在refs/changes/xx/yyyy/z
的描述中更正了。
请注意,如果要创建本地分支名称,指向由git checkout -b new-branch-name refs/changes/xx/yyyy/z
标识的同一提交,但可用作您自己的分支,则可以使用:
UPDATE #temptable AS R INNER JOIN #temptable AS P ON R.date= P.date
AND R.TR = P.TR AND R.SH = P.SH AND P.TK != '' SET R.tk = P.tk WHERE R.tk = ''
如果您只想让该提交成为您当前的提交(以便您可以,例如,对其进行一些测试或查看其快照),您可以通过使用该名称检出该提交来使用分离的HEAD。通过其哈希ID。