我在两台不同的计算机etckeeper
和boxA
上运行boxB
。操作系统,etckeeper
存储库以及boxB
上的所有存储库已于1月份从boxA
复制。为了将boxA
上的一些设置更改应用于boxB
,我在boxA
上添加了存储库作为boxB
上的远程存储库,目的是进行一些樱桃采摘,例如:
git remote add boxA ssh://boxA/etc
git fetch boxA
git cherry-pick xxxx # never got this far
问题是boxA
上没有最新的提交,只能提交到2月底。到目前为止,我已经尝试过:
使用其中一个缺少的提交号执行git show
- 这绝对不是git log
只是没有显示所有提交的问题。
将/etc
上的完整boxA
复制到boxB
并通过其路径添加/获取 - 这绝对不是ssh
以某种方式引入的问题(使我通过GIT_SSH
环境变量使用脚本以避免创建root
登录信息的复杂化。
git fsck
(未发现任何问题)。
在两个存储库的复制版本上运行以下命令(在git remote remove boxA
之后和读取之前执行boxB
):
git -c gc.reflogExpire=0 -c gc.reflogExpireUnreachable=0 \
-c gc.rerereresolved=0 -c gc.rerereunresolved=0 -c gc.pruneExpire=now gc \
--aggressive
如何让git fetch
检索所有提交?
答案 0 :(得分:1)
所以这里的问题结果是,在一个不完整的固定rebase修复后,boxA
上的存储库中有一个detached head。发生这种情况时,git branch
的输出如下:
# git branch
* (no branch)
master
fix只是在boxA
上创建一个分支,然后将其合并:
git branch temp
git checkout master
git merge temp
git branch -d temp
之后,在执行另一个git fetch
后,分支主服务器上的所有提交(或者至少我认为是分支主服务器)都可用。