Ich habe derzeit ein privates Repository auf Github, das ich veröffentlichen möchte. Einige der anfänglichen Commits enthalten jedoch Informationen, die ich nicht veröffentlichen möchte (fest codierte Crentials usw.).
Was ist der einfachste Weg, um das neueste Commit öffentlich zu machen (ich brauche oder möchte die vorherigen Commits nicht wirklich im öffentlichen Repository), ohne einen Teil oder den gesamten Commit-Verlauf einzubeziehen?
Antworten:
Sie können die Tiefe des Verlaufs beim Klonen begrenzen :
Verwenden Sie diese Option, wenn Sie einen begrenzten Verlauf wünschen, aber noch einige.
quelle
shallow update not allowed
.Verwenden Sie den folgenden Befehl:
Wo:
depth
ist die Anzahl der Commits, die Sie einschließen möchten. dh wenn Sie nur die neueste Commit-Verwendung wünschengit clone --depth 1
branch
ist der Name des Remote-Zweigs, von dem Sie klonen möchten. dh wenn Sie die letzten 3 Commits von dermaster
Zweigverwendung verwenden möchtengit clone --depth 3 -b master
repo_url
ist die URL Ihres Repositorysquelle
shallow update not allowed
. Ich fand diese Stapelüberlaufantwort in diesem Fall nützlich.Das Löschen des
.git
Ordners ist wahrscheinlich der einfachste Weg, da Sie den Verlauf nicht wollen / brauchen (wie Stephan sagte).So können Sie aus Ihrem letzten Commit ein neues Repo erstellen: ( Wie klone ich ein Seed / Kick-Start-Projekt ohne die gesamte Historie? )
dann löschen
.git
und anschließend ausführenOder wenn Sie Ihr aktuelles Repo wiederverwenden möchten : Machen Sie das aktuelle Commit zum einzigen (anfänglichen) Commit in einem Git-Repository?
Befolgen Sie dann die obigen Schritte:
Schieben Sie zu Ihrem Repo.
quelle
quelle
--depth 1
ist in diesem Fall nicht notwendig , weil die Geschichte auch mit gelöschtrm -rf .git
git clone --depth 1 -b $src_branch $repo_src_url $dir && cd ./$dir && git commit --amend --author "Some One <[email protected]>" -m "Initial Commit" && git remote set-url origin $repo_trg_url && git push -u origin master
--depth 1
ist unnötig, aber es ist auch harmlos und es spart ein wenig Netzwerkbandbreite (es macht keinen Sinn, einen Verlauf abzurufen , den Sie sowieso löschen möchten)Ist das nicht genau das, was das Quetschen einer Rebase bewirkt? Zerdrücke einfach alles außer dem letzten Commit und drücke es dann (erzwinge).
quelle