wake-up-neo.com

Wie kann ich das Saat-/Kick-Start-Projekt ohne die gesamte Geschichte klonen?

Beachten Sie, dass Sie mit dem Parameter --depth=1 verhindern, dass das Projekt in ein neues Repository verschoben wird.

details siehe: "Remote Abgelehnt" (flaches Update nicht zulässig) nach Änderung der Remote-URL von Git

46
itamar

Sie können ein tun 

git clone <git_url>

löschen Sie das .git-Repository aus Ihrem Ordner. Was wird alle Ihre Geschichte löschen. 

Das kannst du tun

git init 

das wird ein völlig neues Git-Projekt für Sie schaffen.

Dies ist möglicherweise nicht der beste Weg. Aber das wird funktionieren. Ich hoffe es hilft.

42
Ajay

Solange Sie den vollständigen Verlust der Geschichte für kein Problem halten, ist der von Ajay vorgeschlagene Ansatz vollkommen gültig. Falls Sie jedoch die Geschichte Ihres flachen Klons beibehalten möchten, habe ich einen anderen Vorschlag.


Ein flacher Klon gibt vor, die vollständige Historie zu haben, indem er einen sogenannten Graft Point verwendet, um das übergeordnete Element des ersten Commits zu fälschen. Wenn wir davon ausgehen, dass wir die vollständige Historie zur Verfügung haben, könnten wir die Frage umformulieren: Wie kann ich die Historie vor einer bestimmten Revision wegwerfen?

Dies bedeutet, dass wir eine Kombination aus einem Transplantationspunkt und git filter-branch verwenden können (wie in der verknüpften Frage vorgeschlagen). Sie müssen jedoch beachten, dass dadurch Ihre gesamte Historie neu geschrieben wird, wodurch die neue mit der Fernbedienung, mit der wir ursprünglich geklont wurden, nicht kompatibel ist. Aus diesem Grund sollten wir die alte Fernbedienung aus unserem Repository entfernen.

git remote remove <old-remote-name>

Jetzt können wir mit dem Umschreiben beginnen. Nehmen wir an, wir wollen, dass current master die neue Wurzel für das Repository festschreibt.

git rev-parse --verify master >> .git/info/grafts
git filter-branch -- --all

Dadurch wird die gesamte Historie unseres Repositorys mit dem aktuellen Master-Commit als neuer Root neu geschrieben. Sie können das Umschreiben abschließen, indem Sie die "Backup" -Verweise in refs/original entfernen. Außerdem können Sie die .git/shallow-Datei jetzt löschen.

Nachdem Sie dies getan haben, sollten Sie die jetzt ungrafted - Historie in Ihre neue Fernbedienung verschieben können.

17
Sascha Wolf

Versuchen Sie etwas so:

mkdir -p /tmp/git-copy
cd /tmp/git-copy

# create another copy of your repository
git clone file:///path/to/cloned/repo

cd repo
git rebase -i (first-commit)

# in vim:
# :2,$s/^pick/squash
# :w

# Now wait, it will take a while...

git Push --mirror [email protected]:username/new-repo.git

Ich habe es gerade an diesem Repository ausprobiert. Scheint zu funktionieren - keine Historie und alle Submodule sind intakt.

0