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

git przeniesienie historii folderu do nowego repozytorium

0

Mam w repozytoriu folder bibliotekaX
np.

REPO A
    /src/bibliotekaX/koza.cpp

Chciałbym historię jednego folderu przeniesc do zewnetrznego repozytorium

REPO_B
    /koza.cpp

Aby finalnie mieć cos takiego:

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

Jak przenieść historie jednego folderu ?

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

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.

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ł

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ść

2

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

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1