Mam dwie gałęzie A i B. Chcę utworzyć nowy (scal) commit na A z bieżącym stanem A jako rodzic, który odnosi się do drzewa plików opisanego przez B odrzucając wszystko od A. Zasadniczo historia B powinna zostać zgnieciona w pojedynczym zatwierdzeniu.Tworzenie Merge Commit zastępowanie Ours przez nich
Stan konkretnego repozytorium składa się z dwóch niezależnych gałęzi, które nie mają wspólnego przodka (pochodzącego z dwóch niezależnych repozytoriów), ale które opisują tę samą treść. Teraz chcę znaleźć "git" - aby je połączyć. Podstawowym rozwiązaniem (bez git) byłoby checkout A i po prostu skopiowanie zawartości B do drzewa roboczego i wykonanie git commit
. To jest w zasadzie to, co wcześniej zrobiłem, aby propagować zawartość drugiego repozytorium w pierwszej.
Aby zrobić to z git Próbowałem
git checkout A
git merge --squash B
Ale unforunately to scalić konflikty generowane dla wszystkich plików, które różnią się między A i B, co jest na pewno nie tego się spodziewałem.
Zasadniczo coś
git merge --squash -s theirs
powinien wykonać zadanie, ale strategia seryjnej theirs
nie istnieje. Czytając Docu pokazuje możliwość korzystania coś
git merge -X theirs
który jest opcją strategię scalania recursive
. Ale to wciąż stanowi połączenie niekolidujących fragmentów. Tylko sporne fragmenty są pobierane bezpośrednio z theirs
.
należałoby z tych 'scalić --their' strategie pomocne tutaj? http://stackoverflow.com/questions/4911794/git-command-for-making-one-branch-like-another/4912267#4912267 – VonC
Wspomniana symulacja nr 2 powinna wykonać zadanie. Po prostu użyłem go do "scalania - sequash". Następnie w historii B następuje scalenie z A, ale to jest w porządku. Jeśli nie jest to pożądane, można ponownie ustawić B. –
Ok, dodałem # 2 jako odpowiedź. – VonC