在我的git存储库中,每当我执行git status
或git log
等任何git命令时,都会收到错误:
fatal: bad config file line 1 in .git/config
如何重建该文件或新文件?
答案 0 :(得分:19)
对于那些遇到这个问题的人(我相信这是由于崩溃git mid init?)在windows中,如果你最近从你的git repo的.git /文件夹备份配置文件,你可以通过更换与它一起存在(任何ref都添加,因为副本显然需要重新添加) - 完全不理想但比丢失所有提交更好。
答案 1 :(得分:17)
我知道在一些教程中他们要求你把下面的代码,但他们实际上意味着他们是你在终端输入的命令: git config --global user.name“NewUser” git config --global user.email newuser@example.com
如果你正在修改文件($ sudo nano~ / .gitconfig),你可以把它放到你的文件中:
[user]
name = WilliamQLiu
email = WilliamQLiu@myemailaddress.com
答案 2 :(得分:13)
我的问题与Git解析为$HOME/.gitconfig
的全局配置有关,但其根本原因恰好与位置无关。
> git config --global -l
fatal: bad config file line 1 in C:\Users\<user>/.gitconfig
我习惯将主目录中的配置文件符号链接到嵌套的Git存储库,以便在我的多个开发环境中维护文件。事实证明,Cygwin对符号链接的实现对于在Windows下运行的Git没有多大意义。
我将符号链接更改为硬链接,不知怎的,这可以正常工作。我可以通过在Windows中打开.gitconfig链接来验证这一点;当使用符号链接时,文件包含二进制数据,但硬链接文件包含预期的内容。
答案 3 :(得分:9)
最好执行两个命令
git config --global user.name "NewUser"
git config --global user.email newuser@example.com
在终端。这反过来将更新配置文件。
答案 4 :(得分:8)
我遇到了同样的问题(Notepad ++在文件中只显示NULL
个字符。)
我设法通过使用git init
创建一个新的仓库(在一个单独的文件夹中)并从那里复制.git/config
来解决它。
此后遥控器丢失了,但手动读取后一切正常。
答案 5 :(得分:6)
我也有同样的问题,设法通过以下步骤修复它。
答案 6 :(得分:2)
我得到同样的症状。我在Windows上使用Cygwin,当我启动进程“git clone”时,错误消息是“致命的:c:/cygwin/home/myhome/.getconfig中的错误配置行1”
问题显然在于文件名,它是windows c:和cygwin / unix路径之间的混合。 ;-)什么是误导性的是“第1行”消息,而它应该说“找不到配置文件”。
我不知道这是如何产生的,因为我既没有%HOMEPATH%也没有$ HOME set
答案 7 :(得分:2)
初次安装后我遇到了同样的问题。
“致命:文件C中的错误配置行1:\ ProgramData / Git / config”
我以管理员身份打开记事本,导航到错误消息中列出的文件。该文件也是空白但它有空格/标签,所以我删除它们保存文件。现在它可以工作
答案 8 :(得分:1)
对我来说,问题是我在Mac TextEdit应用程序中编辑了该文件,默认情况下,该文件设置为将“标准”双引号转换为“角度”双引号。
在.git/config
中,正确双引号是:“(UNICODE U + 0022引号)
对于我来说,我修复了以下行:
错误:[remote “origin”]
正确:[remote "origin"]
PS:如果您希望Mac TextEdit不“智能地”更改双引号,请转到“首选项”,然后取消选中“智能引号”。
答案 9 :(得分:0)
首先,文件损坏可能是文件系统问题的征兆(就我而言),因此为防止进一步丢失数据,请启动到救援模式,并在挂载分区之前运行磁盘检查实用程序(例如fsck -n
或xfs_repair -n
)。
但是如果您使用的是 Jenkins,那么找到损坏的 .git/config
文件可能并不容易。它在本地存储至少两个副本:
<JENKINS_HOME>/<remote_repo_name>
中的远程存储库的本地副本中,并且git-*
中的多个 <JENKINS_HOME>/caches
文件夹之一中。答案 10 :(得分:0)
我在push上遇到类似的问题,可以使用以下方法修复它:
>>> True == True in (True, False)
True
>>> True == False in (True, False)
False
>>> 2 == 2 in (2, 3)
True
>>> 1 == 1 in (2, 3)
False
>>> 1 != 2 in (2, 3)
True
>>> 2 != 1 in (2, 3)
False
>>> 2 in (2, 3) in [True, False]
False
答案 11 :(得分:0)
我在Android项目中遇到了同样的问题。所以我只是在Android Studio中做了以下操作:File-> Invalidate Cache and Restart。它帮助了我。
答案 12 :(得分:0)
我看不到找到确切错误的方法,git
仅显示行号,因此,我发布了故障排除步骤,以防万一。
我在尝试通过文本编辑器(emacs)向我的~/.gitconfig
全局文件添加别名时遇到此问题。我通过使用以下命令来编辑配置来发现我的问题:
git config --global alias.<my_alias> 'my new command'
我正在创建一个别名以仅显示我所在的分支:
$ git config --global alias.thisbranch '!thisbranch() { git branch | grep \* | cut -d " " -f2; }; thisbranch'
问题是*
字符需要在\\
文件中具有~/.gitconfig
两次转义,因为\
的转义字符需要被转义(命令是现在嵌套在字符串中),但我只使用了单个转义字符\
。
所以我的git配置现在看起来像这样:
[alias]
...
...
thisbranch = "!thisbranch() { git branch | grep \\* | cut -d \" \" -f2; }; thisbranch"
答案 13 :(得分:0)
如果您手动编辑 .gitconfig 文件,则可能会发生这种情况。 在C:\ Users \ .gitconfig中(您可以使用Notepad ++对其进行编辑) 打开并检查这些行。
[user]
name = <your username>
email = <your email>
[core]
editor = <editor location>
您可以更改这些行。如果将错误的行添加到编辑器变量中,则可能导致错误。只需删除此行即可。但请务必备份。或者,您可以检查正确的代码/路径以与您的文本编辑器连接,然后将其替换为新的工作代码/路径。
然后保存它。 (这对android studio用户可能会更有帮助)
答案 14 :(得分:0)
更改了配置文件中的电子邮件后,我也遇到了同样的问题。我使用 RewriteEngine On
# remove www from url
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [L,R=301]
# redirect to https://
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^localhost
RewriteCond %{HTTP_HOST} !^127.0.0.1
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
注册了git,然后git为我生成了一封电子邮件,如xxxx@gmail.com
。配置文件上的原始电子邮件为xxxxxx@users.noreply.github.com
。将其更改为我与xxxxxx@users.noreply.github.com
签署的电子邮件导致了此问题。为了解决这个问题,我在线登录了git帐户,访问“设置”,然后导航到“电子邮件”部分,并找到了该部分的GitHub生成的电子邮件,内容如下:
xxxx@gmail.com
我从控制台运行Primary email address
Because you have email privacy enabled, xxxxx@gmail.com will be used for account-related notifications as well as password resets. xxxx@users.noreply.github.com will be used for web-based Git operations (e.g. edits and merges).
输入我的计算机密码,然后将电子邮件从sudo nano ~/.gitconfig
更改回Github电子邮件xxxx@gmail.com
。
然后按(ctr + O)保存,然后按Enter,然后按(ctr + x)关闭终端。
为确保它能正常工作,我再次使用xxxx@users.noreply.github.com
克隆了仓库,其中xxxx是仓库并且可以正常工作。 :)
答案 15 :(得分:0)
在Jenkins上,检查git-hash-string的错误消息。 只需删除/ var / jenkins / home / caches / git-hash-string git-hash-string @ tmp。 您可能需要root权限才能从git-hash-string / .git文件夹中删除所有文件。
当您重新启动构建时,一切都会再次正常运行。
答案 16 :(得分:0)
搜索配置文件并删除其中所有对我有用的空格。
答案 17 :(得分:0)
如果您的.gitconfig文件似乎很好(具有正确的数据),则可以再次将相同的数据复制并粘贴到该文件中,以便修改文件的编辑日期。 这对我来说似乎很好。 并且为了避免将来出现此问题,请备份相同的文件并另存为“ backup.gitconfig_bak”或您喜欢的任何名称。
答案 18 :(得分:0)
Windows
对我有用的只是从另一台机器复制C:\ProgramData\Git\config
中的配置文件。它的新内容变成了下面显示的内容,它取代了以前的乱码:
[core]
symlinks = false
autocrlf = true
fscache = true
[color]
diff = auto
status = auto
branch = auto
interactive = true
[help]
format = html
[rebase]
autosquash = true
答案 19 :(得分:0)
对于Cygwin,它在.gitconfig
文件中搞砸了我的用户名。
我的用户名是以域\用户名创建的,显然反斜杠正在逃避&#39; s。
所以,如果你输入git status
之后就得到了这个:
fatal: bad config line 2 in file /cygdrive/c/Users/yourname/.gitconfig
然后这样做:
vi /cygdrive/c/Users/yourname/.gitconfig
所以上面的建议很有用......在创建git存储库(git init
)之前,立即设置这些变量:
git config --global user.name "NewUser"
git config --global user.email newuser@example.com
因为默认值很可能不正确。
答案 20 :(得分:0)
他们能做的最好的事情就是将所有文件复制到除文件夹.git之外的其他路由中,然后复制上次设置上传的提交并粘贴移动到其他路由的文件,以便覆盖它们并允许新提交。
答案 21 :(得分:0)
对我来说,我打开了配置文件并删除了其中的所有内容。我备份了存储库并重新克隆了存储库。然后,我从备份的存储库中手动应用了我的更改。
我应该注意,清除配置时,远程跟踪信息将丢失。您可以重新添加远程主机,但对我来说非常繁琐。
答案 22 :(得分:0)
我在我的存储库文件夹的根目录中删除了.git/config
,因为这是错误消息中给出的错误的配置文件名。
然后我重新打开SourceTree(这是我通常使用的),除了遥控器之外的所有东西都在那里。
答案 23 :(得分:0)
我在Windows 8.1中使用GitHub for Windows客户端2.14收到此错误。*
在我当地克隆的git存储库都不可访问。分支名称,更改的文件,历史记录等不可见。
打开Git Shell并尝试使用git status
检查存储库状态,这是一条错误消息
fatal: bad config file ... at C:\Users\MyUser\AppData\Local\GitHub\PortableGit_xxxxx06exx6fdf878271f7fe636a147ff37326ad\etc\gitconfig
所以我在这个路径上删除了gitconfig文件并关闭了Git shell和Git客户端。再次启动Git客户端,存储库恢复正常。
答案 24 :(得分:-2)
我也遇到了同样的问题,所以我去了文件路径和c:\ User \ .gitconfig并删除了其中的所有内容并保存了。 现在正在工作 $ git-版本 git版本2.22.0.windows.1