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

标签 git

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

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

我能做什么?改回文件会相当困难(我一直试图用字符串 b 替换所有出现的字符串 a,但是 b 是已经出现在许多文件中)。

我没有存储库的任何备份。

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

最佳答案

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

关于git - 在所有文件上盲目使用 sed 后修复 git 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18314627/

相关文章:

Git pull 错误 : Your local changes to the following files would be overwritten by merge:

git - 如何在 Heroku 上使用 1 个共享模块部署单独的 2 个应用程序

git - 忽略 Git 历史中无意义的 "Merge branch"提交?

git - 在 Gitlab 中获取贡献

git - 如何在不破坏文件历史记录的情况下 merge 多个 Git 存储库?

svn - GIT和SVN在 merge 冲突解决上有什么区别

git - ghprb - 添加内容以构建状态消息?

windows - 如何在 Windows 上存储 Git 的身份验证凭据?

git - 使用 Git 仅 merge 修改过的文件

git - 如何只显示 git 历史上的删除