由于某种原因,我的 git 日志显示我有一个fork/main分支,如下所示:
~ git log
commit abc123abc123 (HEAD -> main, origin/main, origin/HEAD)
Author: Me
...
commit xyz789xyz789 (fork/main)
Author: Me
...
Run Code Online (Sandbox Code Playgroud)
但在本地,我只有 1 个分支(主分支),并且在我的私人 github 存储库上Forks显示0. 这是什么东西以及我如何摆脱它/理解它?
可能相关,但当我这样做时gh pr create,它会两次为我提供我的仓库作为选项。我的其他私人仓库不会发生这种情况:
? Where should we push the 'testing' branch? [Use arrows to move, type to filter]
> me/my-private-repo
me/my-private-repo
Skip pushing the branch
Cancel
Run Code Online (Sandbox Code Playgroud)
更新:
~ git remote -vv
fork https://github.com/me/my-repo.git (fetch)
fork https://github.com/me/my-repo.git (push)
origin https://github.com/me/my-repos-old-name.git (fetch)
origin https://github.com/me/my-repos-old-name.git (push)
~ git branch -r
fork/fix-types <--- This PR was recently landed and the branch deleted, but never on any kind of fork (at least not that i know of)
fork/main
origin/HEAD -> origin/main
origin/main
Run Code Online (Sandbox Code Playgroud)
输出git remote -vv以及您在 GitHub 上重命名存储库的事实表明,这fork只是具有新 URL 的远程设备的本地名称,也是origin具有旧 URL 的远程设备的本地名称。
从您的提交日志来看,您似乎仍在使用旧名称进行推送,但这并不重要,因为每当您重命名存储库时,GitHub 都会将旧名称保留为别名。这是为了让旧的沙箱继续工作。
实际上这一切都没有问题,您可以忽略它并继续推送以使用origin旧 URL。但如果您想清理它以减少混乱,您可以 1) 删除不必要的fork遥控器,2) 更改origin.
跑步
git remote remove fork
Run Code Online (Sandbox Code Playgroud)
fork从沙箱中删除遥控器。
我认为这样做是值得的,因为日志中这个假定的(错误命名的)分叉的存在确实会继续令人困惑。
跑步
git remote set-url origin https://github.com/me/my-repo.git
Run Code Online (Sandbox Code Playgroud)
指向origin新 URL 而不是旧 URL。
这只是为了整洁,但不会产生任何有效的区别,因为 GitHub 将永远保留旧名称(好吧,只要您以后不使用旧名称重新创建新的存储库)作为重定向到新名字。但它会让事情在未来变得更加清晰,而且我想它避免使用重定向,因此它可能(一点点)更有效。