485 Stimmen

Kann nicht auf GitHub pushen, weil eine große Datei vorhanden ist, die ich bereits gelöscht habe

Aktuell habe ich

  1. Leeres GitHub-Repository
  2. SSH-Server-Repository (Hauptrepository)
  3. Lokales Repo

Das SSH-Server-Repository war das aktuellste Repository (Produktionsseite), also habe ich von dort aus ein Git clone auf das lokale Repository durchgeführt. Anschließend habe ich versucht, ein git push zu GitHub zu machen.

Alles lief gut, aber dann kam eine Meldung, dass die Datei filename.gz für GitHub zu groß sei. Da ich diese Datei nicht brauchte, habe ich mehrere Git-Befehle ausgeführt, um sie aus dem Git-Cache zu entfernen, und dann zurück auf den SSH-Server gepusht.

Ich sehe die große Datei lokal nicht, aber sie ist immer noch auf dem SSH-Server, obwohl git diff nichts zurückgibt und git push "Alles ist auf dem neuesten Stand" zurückgibt - und obwohl die Datei im lokalen Repository nicht sichtbar ist. Beim Versuch, zu GitHub zu pushen, erhalte ich immer noch einen Fehler.

remote: Fehler: Die Datei fpss.tar.gz ist 135,17 MB groß; das übersteigt das Dateigrößenlimit von GitHub von 100 MB

Ich habe die Schritte unter "Problembehebung" auf der GitHub-Hilfeseite befolgt, sollte das nicht ausreichen?

Warum ist die Datei immer noch "in der Luft", wenn sie weder lokal ist noch in git status/diff/push aufgelistet ist?

2voto

Nikhith sunil Punkte 215

Ich denke, dass dies daran liegt, dass Ihre gelöschte Datei möglicherweise bereits in Ihrem Commit vorhanden ist. Um dies zu überprüfen, verwenden Sie zuerst

git log

Dies gibt eine Liste Ihrer Commits im aktuellen Branch zurück. Suchen Sie die ID für den genauen Commit, den Sie suchen,

Dann verwenden Sie,

git show 

Dies sollte die Details des Commits mit den darin enthaltenen Dateien anzeigen

Um Ihr Problem zu beheben, verwenden Sie nun

git reset --soft HEAD~1

Hier steht die 1 bei HEAD~1 für den vorherigen Commit. Sie können je nach benötigtem Commit eine andere Nummer verwenden. Wenn Sie den vorletzten Commit benötigen, verwenden Sie einfach git reset --soft HEAD~2

Dies setzt Ihren Head auf den vorherigen Commit zurück. Wenn dieser Commit die große Datei nicht enthält, können Sie Folgendes tun,

git add .

git commit -m 

git push origin 

sonst

Wenn Sie auf einen bestimmten Commit zurücksetzen möchten, der Ihre Datei nicht enthält, verwenden Sie einfach

git reset --soft 

Erstellen Sie dann von hier aus einen neuen Commit ohne die gelöschte Datei und pushen Sie ihn

1voto

Emre Punkte 317

Meine unkonventionelle, aber einfache Lösung von Grund auf:

  • Vergessen Sie einfach Ihr kürzlich problematisches lokales Git-Repository und klonen Sie Ihr Repository in ein frisches neues Verzeichnis mit git clone.
  • git remote add upstream
  • git pull upstream master
  • An diesem Punkt kopieren Sie einfach Ihre neuen Dateien zum Commit in Ihr neues lokales Repo vom alten, möglicherweise einschließlich Ihrer jetzt reduzierten riesigen Datei(en).
  • git add .
  • git commit -m "dein Commit-Text hier"
  • git push origin master

Voilà! Hat in meinem Fall wie ein Zauber funktioniert.

1voto

Für mich war die Lösung einfacher, ich habe einfach einen neuen Ordner erstellt, das Repo geklont, die neuen Dateien vom letzten Commit hinzugefügt und einfach gepusht.

1voto

Trent Punkte 19

Das Repo neu initialisieren hat bei mir funktioniert:

  1. rm -rf .git
  2. git init
  3. git remote add origin https://github.com/{user}/{repo}
  4. git commit -am 'fix: reinit repo'
  5. git push -u origin {branch} --force

1voto

Mr Mayur Punkte 481

Irgendwie hat das für mich funktioniert. Ich habe alle Lösungen ausprobiert, aber dieser Befehl hat mir Zeit gespart. Hoffentlich hilft es auch dir.

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch ' --prune-empty --tag-name-filter cat -- --all

Bitte führen Sie dies auf eigene Gefahr aus. Ich übernehme keine Verantwortung für Ihre Handlungen.

Führen Sie diesen Befehl vom Stammverzeichnis aus aus

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X