Próbuję przenieść tylko zawartość jednego repozytorium ( repo1
) do innego istniejącego repozytorium ( repo2
) za pomocą następujących poleceń:
git clone repo1
git clone repo2
cd repo1
git remote rm origin
git remote add repo1
git push
Ale to nie działa. Przejrzałem podobny post, ale znalazłem tylko jeden przenoszący folder, a nie zawartość.
git
merge
repository
migrate
Mario
źródło
źródło
Odpowiedzi:
Myślę, że polecenia, których szukasz, to:
Po tym
repo2/master
będzie zawierał wszystko odrepo2/master
irepo1/master
, a także będzie miał historię obu z nich.źródło
repo1
do podfolderu (wewnątrzrepo1
) przed scaleniem.Doskonale opisane tutaj https://www.smashingmagazine.com/2014/05/moving-git-repository-new-server/
Najpierw musimy pobrać wszystkie zdalne gałęzie i tagi z istniejącego repozytorium do naszego lokalnego indeksu:
Możemy sprawdzić brakujące gałęzie, których potrzebujemy, aby utworzyć lokalną kopię:
Użyjmy sklonowanego przez SSH adresu URL naszego nowego repozytorium, aby utworzyć nowy pilot w naszym istniejącym lokalnym repozytorium:
Teraz jesteśmy gotowi do przekazania wszystkich lokalnych gałęzi i tagów do nowego pilota o nazwie new-origin:
Uczyńmy new-origin domyślnym pilotem:
Zmień nazwę new-origin na just origin, tak aby stał się domyślnym pilotem:
źródło
git checkout BranchName
a następnie ponownie wypchnąć gałąź do zdalnego repozytorium za pomocą,git push --all new-origin
ale wielkie dziękiJeśli chcesz zachować istniejące gałęzie i historię zatwierdzania, oto jeden ze sposobów, który zadziałał dla mnie.
Załóżmy teraz, że chcesz zachować synchronizację repozytoriów źródłowych i docelowych przez pewien czas. Na przykład w bieżącym zdalnym repozytorium nadal istnieje aktywność, którą chcesz przenieść do nowego / zastępczego repozytorium.
Aby pobrać najnowsze aktualizacje (zakładając, że nie masz żadnych lokalnych zmian):
Uwaga: nie korzystałem jeszcze z modułów podrzędnych, więc nie wiem, jakie dodatkowe kroki mogą być wymagane, jeśli je masz.
źródło
Najprostsze podejście, jeśli kod jest już śledzony przez Git, ustaw nowe repozytorium jako „źródło” do wypchnięcia.
źródło
To zadziałało, aby przenieść moje lokalne repozytorium (w tym historię) do mojego zdalnego repozytorium github.com. Po utworzeniu nowego pustego repozytorium na GitHub.com używam adresu URL w kroku trzecim poniżej i działa świetnie.
Znalazłem to na: https://gist.github.com/niksumeiko/8972566
źródło
Użyłem poniższej metody do migracji mojego GIT Stash do GitLab, zachowując wszystkie gałęzie i historię zatwierdzeń.
Sklonuj stare repozytorium do lokalnego.
Utwórz puste repozytorium w GitLab.
źródło
Wygląda na to, że jesteś blisko. Zakładając, że to nie tylko literówka w przesłanym zgłoszeniu, krok 3 powinien być
cd repo2
zamiast repo1. A krok 6 nie powinien byćgit pull
popychany. Przerobiona lista:źródło
Zgodnie z odpowiedzią @ Dan-Cohn Mirror-push jest tutaj twoim przyjacielem. To jest moja droga do migracji repozytoriów:
Tworzenie kopii lustrzanych repozytorium
1.Otwórz Git Bash.
2.Utwórz czysty klon repozytorium.
3.Mirror-push do nowego repozytorium.
4. Usuń tymczasowe repozytorium lokalne utworzone w kroku 1.
Źródła i kredyt: https://help.github.com/en/articles/duplicating-a-repository
źródło
Tutaj jest wiele skomplikowanych odpowiedzi; jeśli jednak nie jesteś zainteresowany zachowaniem gałęzi, wszystko, co musisz zrobić, to zresetować zdalne źródło, ustawić wysyłanie i wypchnąć.
To działało, aby zachować dla mnie całą historię zatwierdzeń.
źródło