Jak wybrać i połączyć tylko подпутьевой drogę z gałęzi opcje w kreatorze

0

Pytanie

Mam ciekawy problem (przynajmniej dla mnie).

Mam master oddział i a feature gałąź, która została oddzielona od master jakiś czas temu. Inna drużyna nadal aktualizować master oddział i moja drużyna pracują tylko nad feature gałąź.

To master gałąź zawiera pewne zmiany, które nie interesują się moją drużynę. Dbamy tylko o ich app folder, to wszystko. Nawet w app folder, interesuje nas nie wszystkie, a tylko te zmiany, które, naszym zdaniem, są nam potrzebne. Nie łączymy nasze feature gałąź w ich master bo wprowadzamy zmiany techniczne stos, i jedyne, co nam się od nich należy, to ich kod JavaScript.

Tymczasem możemy również wprowadzać zmiany w feature oddział app katalog. Tak, że w app folder, mają pewne zmiany, których u nas nie ma, u nas są pewne zmiany, których nie mają. Chcemy, aby wszystkie nasze zmiany, ale wybrać tylko niektóre z nich.

Jak mogę je połączyć master oddział app folder w naszej feature oddział app folder? Badałem w ciągu kilku godzin, próbowałem niektóre rozszerzenia kodu VS, aby zobaczyć różnicę między dwoma folderami. To, co szukam, to interfejs, w którym mogę przyjąć lub odrzucić wszystko, co pochodzi od master folder aplikacji oddziału. Chociaż to moje preferencje, jestem otwarty na wszelkie sugestie, które mogłyby rozwiązać ten problem.

To może wydawać się mylące sytuacją, ale moja drużyna straciła niektórych członków w ciągu ostatnich kilku miesięcy, i różnica między oddziałami z każdym tygodniem coraz więcej i więcej. Teraz chcemy rozwiązać ten problem raz na zawsze.

Dziękuję za pomoc.

cherry-pick git merge
2021-11-24 00:41:33
2
1

To, co szukam, to interfejs, w którym mogę akceptować lub odrzucać wszystko, co pochodzi od głównej gałęzi app folder

git checkout -p master app to niegrzeczne, ale ma przyzwoite szanse służyć tutaj.

Jeśli to nie wystarczy, aby zdecydować, czego chcesz, następnym krokiem będzie selektywne połączenie z

git diff --merge-base @ master -- app | git apply -3

który będzie używać automatyczne urządzenia Git i pozostawi żadnych nakładających się lub stykające się zmienić dla was, abyście mogli zrozumieć, jak zwykle, lub można zapisać różnicę w plik i edytować go w smaku, zanim ją zastosować, jeśli będziesz ostrożny.

2021-11-24 06:42:34
1

Istnieją dwa sposoby, aby to zrobić. Prostszy wariant zapisze zmiany, ale zrezygnuje z wszelkich wykonanych przez siebie commits. Bardziej skomplikowane z nich zachowa zatwierdzenia.

Rekomendacja

Oba z dwóch metod opisanych poniżej, mogą prowadzić do konfliktów scalania i innym kierowniczym bólu w przyszłości, zwłaszcza, gdy ludzie nadal dokonywania zmian w główną gałąź. Ponadto, jeśli masz zmiany w aplikacji/ folderu w wątku funkcji, bezpośrednie wykorzystanie git apply może prowadzić do zastępowania swoich zmian.

Ja zdecydowanie polecam połączyć główną gałąź na gałąź funkcji z pomocą git merge bez spłaszczania. Biorąc pod uwagę rozbieżność, o którym wspomniałeś, mogą wystąpić konflikty korespondencji seryjnej, ale to normalne. Konflikty fuzji robią to, co chcesz: pozwalają one wybrać, jakie zmiany przyjąć, a które odrzucić.

Niemniej jednak, oto dwa podejścia, które są podobne do wyboru wiśni tylko w jednym folderze.

Opcja 1: Anulować zatwierdzenia, zapisz zmiany

Podejście to jest dość proste, i wykorzystuje kombinację git diff i git apply:

git switch feature
git diff feature..master -- app | git apply --index

To będzie:

  • Przełącz się na gałąź funkcji (tu można zastosować zmiany).
  • Uzyskaj wszystkie zmiany wprowadzone w główną gałąź, których nie ma w gałęzi funkcji.
  • Filtrować tylko zmiany w app katalog
  • Zastosuj zmiany za pomocą git apply
  • Wprowadź zmiany, dodając je do indeksu (to jest to, co --index opcja robi)

Jedyną wadą tego podejścia jest to, że on nie będzie zapisywać historię lub przymocować wiadomości.

Stamtąd można samodzielnie wprowadzić zmiany:

git commit -m "Apply changes made to master branch"

Opcja 2: Uzyskaj jak commit, jak i zmiany

Ten jest trochę bardziej skomplikowana i opiera się na git format-patch.

git switch feature
git format-patch --stdout feature..master -- app | git am

To będzie:

  • Przełącz się na gałąź funkcji (gdzie zastosuj zmiany)
  • Uzyskaj wszystkie zmiany wprowadzone w główną gałąź, których nie ma w gałęzi funkcji
  • Filtrować tylko zmiany dokonane w app katalog
  • Sformatuj je jako serię poprawek (zawierający wiadomości o ustalenie, autorów, itp.)
  • Zastosuj wszystkie te poprawki za pomocą git am

Należy pamiętać, że w zależności od treści zmian może to spowodować awarię, który trzeba usunąć ręcznie. (To ostrzeże cię o tym)

2021-11-24 21:55:27

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................