Ich habe ein Repository, in dem viele große Binärdateien leben. Ist es möglich, git so einzustellen, dass es nur die letzte n Anzahl von Commits behält? So wie ich nur die letzten 5 Kopien von Dateien in diesem Repository-Verlauf behalten möchte? Aber ich möchte das nicht alle 5 Commits manuell machen?Halten Sie eine bestimmte Anzahl von Commits im Verlauf mit Git
Antwort
Verwenden Sie "git rebase --interactive". Markieren Sie die ersten fünf Commits als "Pick" und den Rest als "Squash".
wenn aus anderen Repos gezogen, die auch synchronisieren würden, ja? –
Geklonte Verzeichnisse müssen jedes Mal, wenn Sie den Verlauf ändern, den vollständigen geänderten Verlauf abrufen. Ein "Git-Abruf" aus einem geklonten Repository kann also einige Zeit dauern - aber ja, sie werden synchronisiert. – Bombe
Kindasorta. git clone --depth N
können Sie einen "flachen Klon" des Repository machen. Sie können jedoch nicht push/clone/fetch von diesem, so dass es als Entwickler nicht sehr nützlich ist.
ich weiß darüber, aber ich will auch nicht mehr als 5 Kopien in nicht der Repos, nicht nur Klone zu halten. –
Das ist nicht möglich, Sie müssen das Repository neu schreiben, wie @Dustin vorschlägt. Ich schlage vor, dass Sie neu bewerten, wie Sie diese riesigen Dateien speichern möchten. Vielleicht ist Git nicht die beste Lösung. –
Die einzige Möglichkeit, dies zu tun, besteht darin, das Repository regelmäßig neu zu schreiben.
Ein Commit enthält einen Hash der Commit-Metadaten, die Commit-Informationen, die Eltern des Commits und den Baum, den Sie committen. Es ist nicht möglich, etwas in der Vergangenheit zu ändern, ohne die Gegenwart zu beeinflussen.
Wie Dustin bereits erwähnt hat, ist die einzige Möglichkeit, das Repository regelmäßig neu zu schreiben. Git hat definitiv keine "eingebaute" Unterstützung dafür, und wird wahrscheinlich auch keine solche Unterstützung haben (das grundlegende Design der Sache schließt diese Eigenschaft aus). Das bedeutet, wenn Sie es tun wollen, müssen Sie es manuell tun.
Wenn Sie es versuchen möchten, die Antwort auf this question zeigt ein Beispiel, wie dies mit git filter-branch
getan werden kann.
- 1. Entfernen mehrerer Git-Commits aus dem Verlauf
- 2. Wie eine große Anzahl von Commits rebase
- 3. Entfernen eines bestimmten Commits in git-Verlauf, der Zusammenführungen enthält
- 4. Git - Entfernen Sie Commit aus dem Verlauf
- 5. Anzahl der Commits in einem Git-Repository
- 6. Anzahl der Commits auf Zweig in Git
- 7. Commits von Git-Hooks ausschließen?
- 8. Git: Wie findet man Commits von root?
- 9. Hinzufügen von Verlauf in Git
- 10. git Workflow: eine Geschichte von funktionalen Commits pflegen
- 11. GIT-Verlauf für Ordner anzeigen
- 12. Überspringen von Commits in Git für eine Verzweigung (mit SourceTree)
- 13. Wie füge ich bestimmte Zweige/Teil-Commits in Git zusammen?
- 14. git: größte Commits finden
- 15. Git bisect mit fusionierte Commits
- 16. Wie Sie eine Anzahl von Fehlern in Programm C++ halten
- 17. git create Branch mit bestehenden lokalen commits
- 18. Löschen von Commits mit Git Tower
- 19. eine Datei in allen commits in git bearbeiten
- 20. Wie entferne ich eine große Datei 2 Git Commits zurück?
- 21. git filter-branch Commits Nachricht
- 22. Git zusammenführen und getrennt halten?
- 23. Wiederholen Commit-Verlauf in GIT ohne Rebase
- 24. Halten Sie Update-Verlauf in Java + Mysql-Projekt
- 25. Git Protokoll mit diff für eine bestimmte Datei
- 26. Teilbaum in Git mit Verlauf exportieren
- 27. Keep commits Geschichte nach einem 'Git fusionieren'
- 28. Git vorherige Commits abmelden?
- 29. Git fetch eine bestimmte, durch hash
- 30. Git wieder mehrere commits
Ich bezweifle es, aber ich mag die Idee. –