繁体   English   中英

git chaining:git push 来自本地更新的遥控器的 remotes ref。 为什么以及如何可能?

[英]git chaining: git push from local updated remote's remotes ref. Why and how was it possible?

我的回购协议面临着奇怪的 (IMO) 问题,并开始质疑我的假设。 那就是回购链。 网络搜索“git chaining repos”给出了https://serverfault.com/questions/186161/possible-to-chain-git-repos答案“是的,原因”。

现在我只是在本地(第一个回购)中执行了git push origin HEAD:refs/remotes/origin/main ,在第一个的.git/config中有origin (第二个回购)的 URL。

.git/config的第二个回购中,有第三个回购的 URL 作为origin 但是在 delta 中输出了几个对象的push之后,我在 2nd 没有看到git reflog的那些。 相反,我在refs/remotes/origin/main文件哈希中看到了从第一个 repo 推送的最后一次提交的第二个。

你认为这是怎么发生的? 也许对回购协议有一些内部“损害”? 导致我调查的其他问题在git fetch - “拒绝”,git pull “强制更新,获取更新的当前分支头”。 Local 比 remote 提前 2 次提交 TIA

git 版本 2.25.1

添加:

昨天回购似乎还不错,我记得我先同步了 1st 和 2nd,然后是 2rd 和 3nd,今天我想同步 1st 和 2nd。

我今天记得的唯一不寻常的事情是,从第 2 次拉到第 1 次后发生了冲突,我在第 1 次中为具有该冲突的文件执行了git reset FILE ,并从 git 外部的备份中替换(复制到 repo 文件夹)文件。

git做了它被告知的事情,推送到origin HEAD:refs/remotes/origin/main ,这是远程远程。

在进行故障排除时,我注意到.git/config中的main条目是不同的,额外的remotes 显然,它将 main 设置为跟踪 remote 的 remote 上的 main (在链的更下方)。

我还记得我看到git-branch --set-upstream-to=main main产生设置main分支以跟踪原点的 main 和git-branch --set-upstream-to=origin/main main产生如上所述的config更改的效果. 我是因为我已经使用git clone --mirror进行了回购,它将.git/config中的 refs 翻译设置为fetch = +refs/*:refs/*而使用常规clonefetch = +refs/heads/*:refs/remotes/origin/*

我认为需要仔细查看命令的输出才能知道结果。

为了找出问题的原因,我运行了strace ,看到代码只读取用户主目录中的 .git/ .git/config.git/config.git/HEAD.git/refs/heads/main然后实现.git/config条目不同于其他回购的条目(额外的/remotes )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM