• Git Your configuration specifies to merge with the ref 'release'


    问题描述

    昨天,以及今天(2014-11-29),使用 TortoiseGit 时碰到了一个诡异的问题. 卸载,清理注册表,重装,重启,各种折腾以后,还是不能解决. 但是23.45分一过,突然灵光一闪,解决了.

    问题是这样的. 使用命令行的 git pushgit fetchgit pull 什么的都没问题. 但是使用 TortoiseGit 执行拉取(pull ...) 命令时, 就给报错, 报错信息如下:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. git.exe pull -v --no-rebase --progress "origin"  
    2.   
    3. /libexec/git-core/git-sh-setup: line 83: /bin/sed: Bad file number  
    4. From https://github.com/cncounter/translation  
    5. = [up to date]      master     -> origin/master  
    6. D:DevelopGit/libexec/git-coregit-pull: line 268: /bin/tr: Bad file number  
    7. Your configuration specifies to merge with the ref 'master'  
    8. from the remote, but no such ref was fetched.  
    9.   
    10. git 未能顺利结束 (退出码 1) (3510 ms @ 2014/11/29 23:51:56)  


    死活各种折腾,根据提示,说: 你的配置指定了去合并(merge)远端的'master',但没有获取(fetch)到这个引用(ref).

    然后各种测试,各种折腾,总算发现了一点规律. 如果 GitHub 在线仓库只有一个分支, 也就是 master 时, Pull 拉取就不报错, 如果在线的远端仓库有多个分支,如 master 加上 gh-pages 时,一拉取就报这个错. 但使用 git 命令行就没有这个问题. 那么问题来了, 肯定是 TortoiseGit 的哪里配置不对.

    想去想来,突然想在 局部仓库的配置文件中修改下, 先看看会报错的这种配置:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. [core]  
    2.     repositoryformatversion = 0  
    3.     filemode = false  
    4.     bare = false  
    5.     logallrefupdates = true  
    6.     symlinks = false  
    7.     ignorecase = true  
    8.     hideDotFiles = dotGitOnly  
    9. [remote "origin"]  
    10.     url = https://github.com/cncounter/translation.git  
    11.     fetch = +refs/heads/*:refs/remotes/origin/*  
    12. [branch "master"]  
    13.     remote = origin  
    14.     merge = refs/heads/master  
    15. [remote]  
    16.     pushdefault = origin  
    17. [credential]  
    18.     helper = store  

    查看方法:

    • 打开Git项目根目录, 找到 .git 文件夹,进去里面编辑 config 这个文件,注意此文件没有后缀.
    • 还可以在当前项目根目录下点击鼠标右键, 选择 TortoiseGit --> Settings(设置 S), 然后选择左边的 Git --> 右边的 编辑本地.git/config 按钮,即可打开这个文件,如下图所示:

    那么,看看一个正常的pull拉取操作会有哪些日志输出呢?

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. git.exe pull -v --no-rebase --progress "origin" master  
    2.   
    3. From https://github.com/renfufei/asynquence  
    4. * branch            master     -> FETCH_HEAD  
    5. = [up to date]      master     -> origin/master  
    6. Already up-to-date.  
    7.   
    8. 成功 (5959 ms @ 2014/11/30 0:11:27)  


    一对比就发现第一行 git pull ..... 最后面少了一个 master. 于是想着在 config 文件里面加上这个 master 看看行不行.

    修改后的配置如下:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. [core]  
    2.     repositoryformatversion = 0  
    3.     filemode = false  
    4.     bare = false  
    5.     logallrefupdates = true  
    6.     symlinks = false  
    7.     ignorecase = true  
    8.     hideDotFiles = dotGitOnly  
    9. [remote "origin"]  
    10.     url = https://github.com/cncounter/translation.git  
    11.     fetch = +refs/heads/*:refs/remotes/origin/*  
    12. [branch "master"]  
    13.     remote = origin master  
    14.     merge = refs/heads/master  
    15. [remote]  
    16.     pushdefault = origin  
    17. [credential]  
    18.     helper = store  

    需要注意的是,因为远端有多个分支,所以这个配置文件里,相应的就多了一个小节 [branch "master"],而 这个小节下面的 remote = origion, 现在加上 master 变为:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. [branch "master"]  
    2.     remote = origin master  
    3.     merge = refs/heads/master   


    如下图所示:

    保存,再次测试,OK,可以正常拉取:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. git.exe pull -v --no-rebase --progress "origin" master  
    2.   
    3. From https://github.com/cncounter/translation  
    4. * branch            master     -> FETCH_HEAD  
    5. = [up to date]      master     -> origin/master  
    6. Already up-to-date.  
    7.   
    8. 成功 (2246 ms @ 2014/11/30 0:19:25)  


    注意看到, 在第一行 git.exe pull .... 最后面多出了一个 master:

    好了,问题完美解决.[这可能是 TortoiseGit 当前版本的一个 BUG]

    总结

    有些日子,不适合写代码,也不适合调程序, 但适合填坑, 也许坑填的多了,时间一转,问题就解决了。

    相关文章

    1. 目录
    2. 安装及配置Git
    3. 安装及配置TortoiseGit
    4. Git与TortoiseGit基本操作
    5. MarkDown示例
    6. 解决 TortoiseGit 诡异的 Bad file number 问题
    7. 加入QQ群GitHub家园: 225932282

    日期: 2014-11-29
    作者: 铁锚: http://blog.csdn.net/renfufei

    GitHub版本: https://github.com/cncounter/translation/blob/master/tiemao_2014/GitHelp/05_BadFileNumber.md

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    389 Directory Server RHEL 6.0以上客户端安装方法
    389 Directory Server RHEL 6.0以下客户端安装方法
    堆排序算法
    单链表倒置(递归与非递归)
    发帖水王问题及扩展
    2.5 k个最大的数
    2.7 最大公约数
    进制转化的算法问题。
    boost图库简单操作
    C++编程必备
  • 原文地址:https://www.cnblogs.com/xiaocandou/p/4953658.html
Copyright © 2020-2023  润新知