在所有文件上盲目使用sed后修复git存储库

时间:2013-08-19 13:09:02

标签: git

我已经尝试使用sed来更改我的git存储库中的所有文件(我在意识到它正在更改git文件后点击了Control-C)。现在我在尝试提交时收到此消息:

$ commit -a
fatal: could not open '.git/COMMIT_EDITMSG': Permission denied

我该怎么办?更改文件会相当困难(我一直在尝试用字符串a替换所有出现的字符串b,但许多文件中已经发生了b

我没有任何存储库备份。

编辑:其实我有一个,但它以类似的方式搞砸了(我这样做是为了测试一些东西,之后没有用它作为git存储库)。

2 个答案:

答案 0 :(得分:3)

  1. 修复.git/config。我能想象的唯一导致权限被拒绝编辑提交日志的错误是编辑器设置无效
  2. 检查权限。它可能仍然是不同的问题。
  3. 在存储库上执行git fsck。如果它给你错误,它可能是不可恢复的,你需要获得存储库的另一个副本(重新克隆上游,恢复备份等)。
  4. 如果你真的很绝望,请尝试撤消转换为fsck声明错误的所有文件。如果存在歧义,您将不得不尝试所有可能的组合。至少你可以确定当fsck停止列出文件时你正确地解除了更改。

答案 1 :(得分:0)

您可以克隆存储库并将.git目录移动到存在问题的文件夹中。

git clone repo-address tmp-dir
mv tmp-dir/.git issue-dir
rm -rf tmp-dir

issue-dir是您的目录。