最近,我在两个不同的复制服务器上更改了我的原始遥控器。
现在我在服务器上遇到了这种情况,一切正常:
$git branch -a
* master
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
在另一台服务器上我有这个
$git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
没什么大不了的,因为一切都应该有效,但是为了清洁起见,我希望有相同的情况。
所以我试过:
git branch -d -r origin/HEAD
Run Code Online (Sandbox Code Playgroud)
答案是:
Deleted remote branch origin/HEAD (was 542d392).
Run Code Online (Sandbox Code Playgroud)
但后来我有:
$git branch -a
* master
remotes/origin/HEAD -> origin/master
Run Code Online (Sandbox Code Playgroud)
我也尝试修剪:
$git pull -p origin master
Run Code Online (Sandbox Code Playgroud)
但还是一样......没有机会像另一个srvr一样把它清理干净。
任何提示?
非常感谢
编辑
回答评论“git update-ref -d refs/remotes/origin/HEAD 之后发生了什么”
koala@server:~/www$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
koala@server:~/www$ git update-ref -d refs/remotes/origin/HEAD
koala@server:~/www$ git branch -a
* master
remotes/origin/HEAD -> origin/master
koala@server:~/www$ git branch -r
origin/HEAD -> origin/master
Run Code Online (Sandbox Code Playgroud)
将->在git branch输出表明这是一个象征性的参考:即,参考点本身没有提交,而是另一种参考。(其他引用也可以是符号的,但至少在理想情况下,遵循所有这些名称最终会导致常规引用——一个非符号分支名称——指向最终提交。)
这里的问题是git branch不知道如何删除符号引用。当您要求它删除远程跟踪分支时origin/HEAD,它遵循符号引用,发现它是 的替代名称origin/master,然后删除origin/master。
该git remote命令至少在更高版本的 Git 中知道如何删除它:
git remote set-head <name> --delete
Run Code Online (Sandbox Code Playgroud)
在这种情况下,这将转换为git remote set-head origin -d(缩短--delete;请参阅文档)。
如果您的 Git 不够新,无法支持这一点,您可以使用“管道”命令git symbolic-ref,它可以轻松删除符号引用,但您必须将它们完整拼写出来:
git symbolic-ref -d refs/remotes/origin/HEAD
Run Code Online (Sandbox Code Playgroud)
如果您的 Git 版本足够旧而缺少-d此处的标志,您将必须手动删除符号引用,.git/packed-refs如果需要,通过编辑(可能不需要它,如果您的 Git真的很旧,它可能永远不会被创建)并删除文件.git/refs/remotes/origin/HEAD(它要么是一个包含ref:另一个分支名称的纯文本文件,要么是一个符号链接,如果你的 Git真的很旧)。
无论如何,该名称可能会再次git fetch出现(我在某些 Git 1.6.* 或 1.7.* 版本中遇到过这种情况,如果我在手动删除引用后正确记住了版本号)。不同版本的 Git 在这里表现出不同的行为。
Sim*_* PA -1
看一眼 :
git remote prune <branch>
Run Code Online (Sandbox Code Playgroud)
它基本上删除了本地提交的分支。我不能 100% 确定这是您的情况,但值得仔细研究。
编辑:
事实上,这可能更好:删除所有不再存在的本地分支
git remote prune origin
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4056 次 |
| 最近记录: |