【问题标题】:Why isn't git clone setting up a remote tracking branch?为什么 git clone 不设置远程跟踪分支?
【发布时间】:2021-07-10 00:35:00
【问题描述】:

在一台运行 Git 2.24.3 (Apple Git-128) 的新笔记本电脑上,我注意到每当我克隆一个 repo 时,我都没有远程(因此远程跟踪分支)设置:

$ git clone git@gitlab.com/myuser/myproject.git
Cloning into 'myproject'...
remote: Enumerating objects: 70, done.
remote: Counting objects: 100% (70/70), done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 70 (delta 34), reused 63 (delta 27), pack-reused 0
Receiving objects: 100% (70/70), 180.33 KiB | 124.00 KiB/s, done.
Resolving deltas: 100% (34/34), done.
$ cd myproject
$ git status
On branch master
nothing to commit, working tree clean
$ git remote -vv
$
$ git branch -a
* master
$ ls -l .git/refs
total 0
...redacted... heads
...redacted... remotes
...redacted... replace
...redacted... tags
$ ls -l .git/refs/remotes
$

我需要更改某些设置吗?每次我总是想从克隆的地方向后推时,不得不手动创建一个遥控器有点乏味。

文档清楚地表明这应该发生:

将存储库克隆到新创建的目录中,为克隆存储库中的每个分支创建远程跟踪分支(使用 git branch -r 可见),并创建并签出从克隆存储库当前活动的分支创建的初始分支分支。

我正在检查活动分支,但没有远程。

【问题讨论】:

  • 你从git branch -a得到什么? ls -l .git/refsls -l .git/refs/remotes 怎么样?
  • 很奇怪。我不知道有什么配置选项可以做到这一点,但请检查git config -l --show-origin 是否有任何有趣的地方。可能是一个错误,尝试不同的 Git。
  • 另一个奇怪的事情是常规的git clone 不会克隆refs/replace 层次结构,但是,您的输出显示存在或已经存在替换对象。
  • @matt 我可以从我的命令历史记录中看到“你不在你认为的位置”或“你没有 git clone”的假设是不正确的。连续命令为:git clone git@github.com:stevage/mapbox-gl-utils.gitcd mapbox-gl-utilsgit-filter-repo ...,然后添加远程和强制推送。
  • 嗨@SteveBennett - 这是你第一次提到git-filter-repo。那很可能会删除您的遥控器!参见例如stackoverflow.com/questions/66373656/…

标签: git git-clone git-remote


【解决方案1】:

所以问题是你使用的是git filter-repo。这确实可以移除你的遥控器(例如,这里讨论过:How to modify remote history with git filter-repo?)。

【讨论】:

  • 啊。抱歉 - 我想“删除不相关的细节”和“删除唯一真正重要的细节”之间总是存在危险的潜在重叠。
  • 我不得不说,我并不真正相信他们的论点。大量的 Git 命令重写历史记录(特别是 rebase,它一直在使用)——它们不会清除你的遥控器。
  • @SteveBennett 同意,哇。沉默的、令人惊讶的、推定的、破坏性的训练轮。希望运行 filter-repo 的人记得 origin 的 URL。
【解决方案2】:

我会先尝试:

  • 删除全局配置~/.gitconfig(如果有任何其他位置要清除,请与git config -l --show-origin联系)
  • upgrade Git到最新的2.31
  • 再次克隆

这样,您可以通过最近的 Git 和干净的配置检查问题是否仍然存在。

【讨论】:

  • 是的,但是很多其他人使用相同版本的 Git 并且没有这个问题。
  • @matt 然后至少重置全局配置是一个很好的第一步,以排除当前配置的任何副作用。
  • 同意,因此请求查看git config -l --show-origin...虽然不清楚什么配置可以做到这一点。
  • 目前我的全局配置只显示 credential.helper=osxkeychain,以及我的 user.name 和 user.email。但是,鉴于问题现在已经停止发生,并且我运行了 git-config user.email ...,这可能说明不了多少。
猜你喜欢
  • 2021-02-09
  • 2014-08-22
  • 2013-10-02
  • 2014-02-04
  • 2013-04-30
  • 2023-03-09
  • 1970-01-01
  • 2010-09-27
  • 2023-03-24
相关资源
最近更新 更多