2

当我这样做时,我得到以下输出:

git branch
somebranch
anotherbranch
* master
master - myemail@mydomain.com's conflict 09.04.2016_15.02.31

那么最后的冲突分支是什么?我不知道如何检查它,如何查看其中的内容以及如何删除它(这最终是我想要做的)。

PS这是不久前发生的,我不记得现在如何了。我离开了它,但它一直困扰着我,所以我现在想修复它。

更新:Torek 的回答帮助了我。我找不到文件.git/packed-refs。我确实找到了该目录.git/refs/heads并删除了其中不需要的文件/分支。这似乎已经解决了它。

回复:原因,我使用的编辑器是 Atom(来自 github),我已经安装了一个包来从编辑器执行 git 命令。我认为该软件包可能创建了该冲突分支。

4

1 回答 1

2

空格不是 Git 分支名称中的合法字符。

这意味着如果Git 自己创建了那个分支,那么您在 Git 中发现了一个错误。(恭喜!)但是,更有可能的是,一个行为不端的程序认为它比 Git 更了解,偷偷溜到 Git 的背后并创建了那个分支......并且由于空间不是 Git 分支中的合法字符,你可能不得不偷偷摸摸在 Git 的背后再次删除它。

为此请使用不会插入 BOM(字节顺序标记),也不会将纯文本文件转换为 Unicode 的文本编辑器来编辑.git/packed-refs. 如果其中有一行带有虚假分支名称,请删除该行(或将名称修改为更合适的名称),然后写入文件。完成后退出编辑器。然后,检查.git/refs/heads具有该名称的文件(包括嵌入的空白):如果存在,请将其删除(或将其重命名为更合适的名称)。

伪造的分支名称必须存在于至少一个地方,也许同时存在于两个地方,否则 Git 不会将其作为分支名称来查找。

您可能还有一个.git/logs/refs/heads/具有相同假名的文件。如果是这样,该文件应该得到相同的处理(删除或重命名)。

(请注意,该.git目录出现在您的工作树的顶层。 git rev-parse --git-dir将显示它的路径,即使您位于子目录中。)

于 2016-10-25T10:26:17.453 回答