git fetch - 缺少提交

时间:2014-06-19 12:06:40

标签: linux git

我在两台不同的计算机etckeeperboxA上运行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检索所有提交?

1 个答案:

答案 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后,分支主服务器上的所有提交(或者至少我认为是分支主服务器)都可用。