2017-06-17 3 views
0

Eine Datei im Git-Repository hat höchstens eine Historie, die viele Commits enthält. Nun möchte ich Datei [s] mit dem gesamten Verlauf, der von HEAD verfolgen kann (mit dem gleichen AuthorDate/CommitDate), extrahieren und in eine neue leere Verzweigung schreiben (in der Lage, mit git checkout --orphan zu erstellen).[Git] Wie extrahiere Geschichte von bestimmten Datei [s] und schreibe in neue leere Zweigstelle?

Ich weiß, dass git filter-branch Potenzial hat, das zu tun, jedoch weiß ich nicht, wie es für mich zu mächtig ist.

Antwort

0

Ich glaube, Sie können direkt an der alten Niederlassung verzweigen und übermäßige Dateien in diesem neuen Zweig entfernen git filter-branch verwenden. Nach dem Entfernen unnötiger Dateien im neuen Zweig haben Sie zwei Zweige - den alten Zweig unberührt und den neuen Zweig mit den gewünschten Dateien. Die Historie in der neuen Filiale wird von git filter-branch beibehalten (tatsächlich neu erstellt).

+0

Wie spezifiziert man Dateien, die auf 'git filter-branch' entfernt werden sollen? – yumetodo

+0

'git filter-branch --index-filter 'git rm --cachiert --ignore-unmatch file1 file2 ...'". Siehe https://stackoverflow.com/q/872565/7976758, https://stackoverflow.com/q/17993505/7976758, https://stackoverflow.com/search?q=git+filter-branch+remove+files – phd

+0

Danke! Ich habe BFG Repo-Cleaner verwendet und bin Ihrem Ansatz gefolgt. Danach nutze ich git rebase, um leere Commits zu entfernen, die von BFG Repo-Cleaner verursacht wurden. – yumetodo

Verwandte Themen