git - git pull whackiness,无法删除远程分支
问题描述
我一直在运行 git pull 它一直在吐出同样的东西
Deans-MacBook-Pro:orderly dean$ git pull
From github.com:OrderlyHealth/orderly
- [deleted] (none) -> origin/asyncreview_Declan/CleanupReadAPI
- [deleted] (none) -> origin/asyncreview_Declan/DataApiClientRemoved
- [deleted] (none) -> origin/asyncreview_Declan/LinkAPIToProviderService
- [deleted] (none) -> origin/asyncreview_Declan/LinkingReadApi
- [deleted] (none) -> origin/asyncreview_Declan/MultiStreamAndWeirdJsonError
- [deleted] (none) -> origin/asyncreview_Declan/MultiStreaming
- [deleted] (none) -> origin/asyncreview_Declan/MultiStreamingFinished
- [deleted] (none) -> origin/asyncreview_Declan/RefactoringIntToLong
我一直在尝试删除分支,但是说它们不存在是行不通的。我最终陷入了一个循环。我什至从另一篇文章中做了一个 git fetch --prune 并且 git branch -r 仍然列出了可能被删除的分支,或者至少在我删除它们时,它说它们不存在。
Deans-MacBook-Pro:orderly dean$ ls -la .git/refs/remotes/origin/
total 16
drwxr-xr-x 4 dean staff 128 Jun 3 13:40 .
drwxr-xr-x 3 dean staff 96 Jan 30 10:59 ..
-rw-r--r-- 1 dean staff 32 Jan 30 10:59 HEAD
-rw-r--r-- 1 dean staff 41 Jun 3 13:25 master
我尝试删除一个说它存在的分支
Deans-MacBook-Pro:orderly dean$ git branch -r | grep asyncreview_Declan/CleanupReadAPI
origin/asyncreview_Declan/CleanupReadAPI
Deans-MacBook-Pro:orderly dean$
Deans-MacBook-Pro:orderly dean$
Deans-MacBook-Pro:orderly dean$ git push origin --delete asyncreview_Declan/CleanupReadAPI
error: unable to delete 'asyncreview_Declan/CleanupReadAPI': remote ref does not exist
error: failed to push some refs to 'git@github.com:OrderlyHealth/orderly.git'
解决方案
根据您的评论,我将提出这个答案。
标准的 MacOS 文件系统设置也像 Windows 一样进行大小写折叠。也就是说,如果您创建一个文件ReadMe.txt
并尝试打开README.TXT
,您将得到相同的文件。这会影响一些Git 引用:特别是那些被解压缩到单个文件中的引用。它不会影响剩余的 Git 引用。结果可能有点奇怪。但是,真正奇怪的是,如果您反复得到上述内容。如果你只看过一次,那是 Git 的自我纠正。
至于有人如何在 GitHub 上创建它们,这很容易。当您运行时,git push
您可以向其他 Git 指定您希望他们创建或更新的名称。例如,使用存储在您自己的分支名称中的相同哈希 IDgit push origin master:newbranch
创建一个newbranch
在另一个 Git 中命名的分支(GitHub 上的那个分支branch
)。请注意,您的分支名称甚至永远不会传递到 GitHub:他们只会看到您要求他们创建或更新的分支名称,在这种情况下newbranch
,以及哈希 ID。
GitHub 服务器运行 Linux 并以大写和小写完全不同的形式存储名称,因此它们可以有 amaster
和 a Master
,例如,您的 Git 将尝试将它们存储为 yourorigin/master
和your origin/Master
. 当引用被打包时,这在您的 Mac 上有效,但在解压时无法正常工作:您得到一个 origin/master
或 origin/Master
,但不能同时得到两者。如果有人随后删除了Master
GitHub 上的虚假内容,您git fetch --prune
将删除您的origin/Master
. 如果 refs 被解包,这最终会删除两者origin/master
,origin/Master
因为它们都占用一个文件。随后git fetch
恢复丢失的origin/master
,之后一切正常。
无法说出创建错误案例名称分支的人使用的确切命令;我们只知道后遗症。
推荐阅读
- termux - 如何安装特定的python版本(Termux)
- c++ - stdafx.h:致命错误:afxwin.h:没有这样的文件或目录(适用于 2018 VS 社区,但不适用于 VS 代码)
- node.js - 无法在 Alpine Linux 上运行 node-gdal:“__printf_chk:找不到符号”
- kotlin - 内联行映射器
调用 JdbcTemplate.query(String!, RowMapper !, 可变参数任意!) - python-3.x - 为数据框中的每个类别创建日期时间范围:python/SQL
- html - HTML/CSS 中的响应式表格,第一个单元格作为一整行
- xslt - 访问树中其他地方的属性
- python - BeautifulSoup 通过里面的文字找到一个 div 标签
- cmd - 如何使用 PrintUIEntry 在 Windows 7 x64 中的 IPP 打印机上设置“直接打印到打印机”属性?
- ansible - 如何动态覆盖 ansible.cfg 中的默认变量?