[英]git: git log between remote branch and HEAD being in detached HEAD state
git checkout -t原始/5.0
* df957e8 (HEAD, origin/5.0, 5.0) commit A
* 93f3185 commit B
* abd1176 commit C
我使用以下命令从gerrit中签出了一个更改
git fetch gerrit refs / changes / 36/236/1 && git checkout FETCH_HEAD
现在,它进入分离的HEAD状态,在master分支而不是5.0上有传入的提交
* bdd7f9c (HEAD) part 3 of 236
* fa8f60f part 2 of 236
* bddd168 part 1 of 236
* ffc7982 (origin/master, origin/HEAD) commit master
* 415668e
* 991d48d
我希望它像
* bdd7f9c (HEAD) part 3 of 236
* fa8f60f part 2 of 236
* bddd168 part 1 of 236
* df957e8 (HEAD, origin/5.0, 5.0) commit A
* 93f3185 commit B
* abd1176 commit C
我尝试使用symbolic-ref将HEAD指向refs / heads / 5.0,但是在签出FETCH_HEAD之后,它立即显示在master分支的顶部,而不是5.0。
我的目的是使用命令获取来自gerrit更改结帐的提交列表
“ git log --format =”%H“ origin / 5.0..HEAD”
但它在这种情况下不起作用,因为它是从master而不是5.0检出的
如果我缺少任何东西,请告诉我
这里发生了几件事。 首先,在所需的结果中,不能有两个HEAD
。 始终只有一个HEAD
。
当当前的分支提交名称未被任何分支名称或标记引用时,您将获得分离的头状态。
现在,关于为什么将提交置于master
而不是5.0
之上。 每个提交都引用一个父提交。 即每个提交都有一个父节点,该父节点由其哈希引用。 当您获取更改时,获取的提交还带有其父引用,并被相应放置。 例如,假设以下是远程仓库的状态:
A -> B -> C
(C是最新提交)
并且您在本地具有以下历史记录:
A -> B
现在,无论您从哪个分支中提取或获取,在获取提交C
时,都将在此处查找提交B
集。
意思是,从哪里调用获取都没有关系。 特定的提交将驻留在最初进行提交的同一父对象上。
如果您仍然需要移动这3个提交,建议您考虑rebase
。 除非您是回购的唯一贡献者,否则重新定基公共承诺肯定会咬住您。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.