Łączenie repozytoriów .git

Wątek przeniesiony 2023-06-11 13:29 z Hardware/Software przez Riddle.

adams0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 333
0

Cześć.
Robię aplikację o takiej strukturze:

Kopiuj
└─ .
   └─ project
      ├─ backend
      │  └─ .git
      ├─ frontend
      │  └─ .git
      └─ other_file.txt

Przy rozwoju aplikacji commituje do dwóch osobnych repozytoriów.
Mam też pliki poza katalogami frontend i backend które nie są śledzone a powinny.
Uznałem że prowadzenie tego dalej w taki sposób to nie jest dobry pomysł.

W jaki prosty sposób mógłbym połączyć te dwa repozytoria w jedno i zachować commity?

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
6
adams0 napisał(a):

Cześć.
Robię aplikację o takiej strukturze:

Kopiuj
└─ .
   └─ project
      ├─ backend
      │  └─ .git
      ├─ frontend
      │  └─ .git
      └─ other_file.txt

Przy rozwoju aplikacji commituje do dwóch osobnych repozytoriów.
Mam też pliki poza katalogami frontend i backend które nie są śledzone a powinny.
Uznałem że prowadzenie tego dalej w taki sposób to nie jest dobry pomysł.

W jaki prosty sposób mógłbym połączyć te dwa repozytoria w jedno i zachować commity?

Zakładając że chcesz połączyć tylko główne branche (np master jednego z masterem drugiego), to zrób tak:

  • Dodaj remote jednego do drugiego (nie musi być wypchnięty, remote może wskazywać na lokalną ścieżkę)
  • Zrób git fetch --all
  • i zrób merga tych dwóch gałęzi z flagą --allow-unrelated-histories

Jeśli chcesz zachować wszystkie branche, to mógłbyś zrobić z tych istniejących repozytoriów submoduły, używając git submodule. Wtedy miałbyś:

Kopiuj
└─ .
   └─ project
      ├─ .git              # repo
      ├─ backend
      │  └─ .git           # submodule
      ├─ frontend
      │  └─ .git           # submodule
      └─ other_file.txt
SL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1023
5

Jeśli chcesz przerobić w jakiś sposób któreś z repo (wyciągnięcie tylko podkatalogu, zmiana scieżki np / -> /frontend to polecam https://github.com/newren/git-filter-repo . Tyle, że przy takiej operacji zmieniają się hashe commitów (bo commitów nie da się modyfikować), więc ma to sens, gdy chcesz zachować historię bez konieczności utrzymana tych samych hashów

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.