解決 TortoiseGit 詭異的 Bad file number 問題(轉)

問題描述

昨天,以及今天(2014-11-29),使用 TortoiseGit 時碰到了一個詭異的問題. 卸載,清理註冊表,重裝,重啓,各類折騰之後,仍是不能解決. 可是23.45分一過,忽然靈光一閃,解決了.git

問題是這樣的. 使用命令行的 git pushgit fetchgit pull 什麼的都沒問題. 可是使用 TortoiseGit 執行拉取(pull ...) 命令時, 就給報錯, 報錯信息以下:github

 

[plain]  view plain copy 在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:\Develop\Git/libexec/git-core\git-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).ide

 

而後各類測試,各類折騰,總算髮現了一點規律. 若是 GitHub 在線倉庫只有一個分支, 也就是 master 時, Pull 拉取就不報錯, 若是在線的遠端倉庫有多個分支,如 master 加上 gh-pages 時,一拉取就報這個錯. 但使用 git 命令行就沒有這個問題. 那麼問題來了, 確定是 TortoiseGit 的哪裏配置不對.測試

想去想來,忽然想在 局部倉庫的配置文件中修改下, 先看看會報錯的這種配置:fetch

 

[plain]  view plain copy 在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拉取操做會有哪些日誌輸出呢?url

 

[plain]  view plain copy 在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 看看行不行..net

 

修改後的配置以下:命令行

 

[plain]  view plain copy 在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 plain copy 在CODE上查看代碼片 派生到個人代碼片
 
  1. [branch "master"]  
  2.     remote = origin master  
  3.     merge = refs/heads/master   


以下圖所示:code

 

保存,再次測試,OK,能夠正常拉取:

 

[plain]  view plain copy 在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

相關文章
相關標籤/搜索