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

Łączenie repozytoriów .git

0

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

└─ .
   └─ 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?

6
adams0 napisał(a):

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

└─ .
   └─ 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ś:

└─ .
   └─ project
      ├─ .git              # repo
      ├─ backend
      │  └─ .git           # submodule
      ├─ frontend
      │  └─ .git           # submodule
      └─ other_file.txt
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

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