git przeniesienie historii folderu do nowego repozytorium

git przeniesienie historii folderu do nowego repozytorium

Wątek przeniesiony 2022-10-18 11:44 z Dev/ops przez somekind.

Marius.Maximus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2196
0

Mam w repozytoriu folder bibliotekaX
np.

Kopiuj
REPO A
    /src/bibliotekaX/koza.cpp

Chciałbym historię jednego folderu przeniesc do zewnetrznego repozytorium

Kopiuj
REPO_B
    /koza.cpp

Aby finalnie mieć cos takiego:

Kopiuj
 REPO A_prim
      /src/<REPO_B>/koza.cpp

Jak przenieść historie jednego folderu ?

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5549
3

Na pewno da się, bo kolega tak przenosił w pracy. Zdaje się że hasło brzmi branch-filter. Polecenie to pozwala wydzielić i przepisać historię, ale używałem w minimalnym stopniu

S4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1268
2

Tak na chłopski rozum to był zrobił kopie całego repo, wrzucił do nowego remote, a potem usunął to, co mnie nie interesuje.

Marius.Maximus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2196
0

Po zastanowieniu to może niepotrzebnie kombinuje !

Zrobie tak:

Tworze nowe repozytorium REPO_B i przenoszę tam aktualna zawartość bibliotekaX z REPO_A
W REPO_A kasuje bibliotekaX i dodaje submodule do REPO_B i tylko w komentarzu przeniesione z.... jakby zaszła potrzeba sprawdzenia kto to spłodził

liske1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 523
2

Jest coś takiego jak git submodule. Wtedy można zrobić kopię całego repo w innym repo, i można to normalnie git pull na repo A będąc w repo B itp. Może to pomoże Ci na przyszłość

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
2

Jakie submodule? git subtree dokładnie do tego służy.

SL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1020
2

Użyj https://github.com/newren/git-filter-repo , żeby usunąć z całej historii gita całą resztę katalogów (możesz też zrobić inne rzeczy np. przenieść wszystko do innego katalogu). Następnie robisz merge/rebase w docelowym repo i voila

Wszystko zależy co chcesz osiągnąć. Jak chcesz rozwijać oba repo dalej to wspomniane submodule/subtree ale jest to upierdliwe w utrzymaniu. Jak chcesz przenieść na amen tak, że nowe zmiany idą tylko do nowego repo to zrób jak pisałem. Oczywiście taka operacja zmienia hashe commitów, więc jeśli ci na tym zależy to możesz po prostu zmergować jedno repo z drugim i modlić się, żeby nie było konfliktów. Potem możesz w kolejnym commicie poprzenosić wszystko tak jak chcesz. Wada jest taka, że w historii masz pliki, których nie chcesz

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.