最佳答案
我遇到了一个奇怪的问题,我似乎无法解决。事情是这样的:
我在 github 存储库中有一些我不想要的日志文件。我发现这个脚本可以像下面这样从 git 历史中完全删除文件:
#!/bin/bash
set -o errexit
# Author: David Underhill
# Script to permanently delete files/folders from your git repository. To use
# it, cd to your repository's root and then run the script with a list of paths
# you want to delete, e.g., git-delete-history path1 path2
if [ $# -eq 0 ]; then
exit 0are still
fi
# make sure we're at the root of git repo
if [ ! -d .git ]; then
echo "Error: must run this script from the root of a git repository"
exit 1
fi
# remove all paths passed as arguments from the history of the repo
files=$@
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch $files" HEAD
# remove the temporary history git-filter-branch otherwise leaves behind for a long time
rm -rf .git/refs/original/ && git reflog expire --all && git gc --aggressive --prune
当然,我先做了个备份,然后试了试。看起来效果不错。然后,我做了一个 git push-f 操作,得到了以下信息:
error: Unable to append to .git/logs/refs/remotes/origin/master: Permission denied
error: Cannot update the ref 'refs/remotes/origin/master'.
不过,一切似乎都很顺利,因为文件似乎已经从 GitHub 存储库中消失了,如果我再次尝试推动,我会得到同样的结果:
error: Unable to append to .git/logs/refs/remotes/origin/master: Permission denied
error: Cannot update the ref 'refs/remotes/origin/master'.
Everything up-to-date
剪辑
$ sudo chgrp {user} .git/logs/refs/remotes/origin/master
$ sudo chown {user} .git/logs/refs/remotes/origin/master
$ git push
Everything up-to-date
谢谢!
EDIT
哦,有问题,我一整晚都在做这个项目然后就去做我的修改了:
error: Unable to append to .git/logs/refs/heads/master: Permission denied
fatal: cannot update HEAD ref
所以我:
sudo chown {user} .git/logs/refs/heads/master
sudo chgrp {user} .git/logs/refs/heads/master
我再次尝试承诺,我得到:
error: Unable to append to .git/logs/HEAD: Permission denied
fatal: cannot update HEAD ref
所以我:
sudo chown {user} .git/logs/HEAD
sudo chgrp {user} .git/logs/HEAD
And then I try the commit again:
16 files changed, 499 insertions(+), 284 deletions(-)
create mode 100644 logs/DBerrors.xsl
delete mode 100644 logs/emptyPHPerrors.php
create mode 100644 logs/trimXMLerrors.php
rewrite public/codeCore/Classes/php/DatabaseConnection.php (77%)
create mode 100644 public/codeSite/php/init.php
$ git push
Counting objects: 49, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (27/27), done.
Writing objects: 100% (27/27), 7.72 KiB, done.
Total 27 (delta 15), reused 0 (delta 0)
To git@github.com:IAmCorbin/MooKit.git
59da24e..68b6397 master -> master
万岁。我跳转到 http://GitHub.com并检查存储库,而我的最新提交在哪里都找不到。* 抓头 * * 所以我又推了一把 * :
Everything up-to-date
看起来不像。我以前从没遇到过这个问题,这会是 github 的问题吗?还是我搞砸了我的 Git 项目?
剪辑
没关系,我做了一个简单的:
git push origin master
而且还挺顺利的。