web-dev-qa-db-ja.com

git commitからファイルを削除できません

プッシュされていないすべてのgitコミットを破棄し、gitにdata /ディレクトリ内の何もコミットしないように強制するにはどうすればよいですか?

C9.ioプロジェクトからgithubに保存されているプロジェクトへのすべての変更を強制的に上書きしようとしています。誤っていくつかのmongodbデータファイルをgitに追加しました。 data /ディレクトリを.gitignoreに追加しようとしました。更新された.gitignoreを取得するためにgithubからプルしましたが、git Pushを試してみると、data /のこれらの頑固なファイルはまだコミットのためにステージングされています。また、git reset、git rebase、git clean、および this を試しました。ここで、dmpfile.sqlをpi/data/node-login.1に変更しました。

私が何時間もこれにいたのを助けてください、私は本当にイライラしています

Counting objects: 15, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (13/13), done.
Writing objects: 100% (13/13), 150.22 KiB | 92 KiB/s, done.
Total 13 (delta 6), reused 0 (delta 0)
remote: warning: File pi/data/local.0 is 64.00 MB; this is larger than GitHub's recommended maximum file size of 50 MB
remote: warning: File pi/data/node-login.0 is 64.00 MB; this is larger than GitHub's recommended maximum file size of 50 MB
remote: error: GH001: Large files detected.
remote: error: Trace: e6ade98208c08b634ed28aefea36dfbb
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File pi/data/node-login.1 is 128.00 MB; this exceeds GitHub's file size limit of 100 MB
To [email protected]:bobbyg603/goddard.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to Push some refs to '[email protected]:bobbyg603/goddard.git'

.gitignore:

lib-cov
*.seed
*.log
*.csv
*.dat
*.out
*.pid
*.gz

data/

pids
logs
results

npm-debug.log
node_modules

.project
.settings

ありがとう、ボビー

66
bobbyg603

クリスのおかげで、次を実行することでこれを修正できました。

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch pi/data/node-login.0'

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch pi/data/node-login.1'

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch pi/data/local.0'

113
bobbyg603
git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch FOLDERNAME" -- --all

fOLDERNAMEを、指定されたgitリポジトリから削除するファイルまたはフォルダーに置き換えます。

67
Gank

これは私のために働いた:

git rm --cached name_of_a_giant_file
git rm --cached name_of_another_giant_file
git commit --amend -CHEAD
git Push

ソース: Githubヘルプ:大きなファイルの操作

17
biscuit314

BFG Repo Cleaner シンプルで高速、魅力のように動作します

2
Victor Laerte
git filter-branch --tree-filter 'rm -rf path/whaever' HEAD

これは少し簡単で、履歴から削除して書き換える方法です。それが結果です

Rewrite 5ac3045254d33fc5bb2b9fb05dccbdbb986b1885 (61/62) (24 seconds passed, remaining 0 predicted)
Ref 'refs/heads/features_X' was rewritten

今、私はプッシュすることができます

1
ackuser