Utrzymujemy aplikację internetową, która ma wspólną gałąź główną i wiele gałęzi równoległych, po jednej dla każdej instalacji, każda ma kilka specyficznych zmian. Kod źródłowy jest zarządzany w git i jest świetnym narzędziem, gdy potrzebujemy przenoszenia funkcji i poprawek błędów z gałęzi głównej do równoległej. Ale jest kilka plików, które są wrażliwe, a automatyczne scalanie zwykle daje złe wyniki. Tak więc scalanie byłoby znacznie łatwiejsze, gdyby można je było w jakiś sposób oznaczyć, a każde scalenie powodowałoby konflikt wymagający ręcznego scalenia.
Szukałem odpowiedzi:
- Używam opcji scalania --no-commit i --no-ff , ale to nie to samo.
- Tu i tu ktoś zadaje to samo pytanie, ale bez rozwiązania.
- Wydaje się, że podobny przypadek dotyczy tego, jak zapobiec scalaniu pliku za pomocą .gitattributes zawierającego: somefile.php merge = ours . Próbowałem znaleźć opcję scalania, która generowałaby konflikt lub wymuszała ręczne scalanie, ale jak dotąd nie znalazłem.
- .gitattributes zawierające: somefile.php -merge nigdy nie jest scalane automatycznie i dlatego wymusza ręczne scalanie. Jest to rozwiązanie w 90%, ale szukam sposobu na automatyczne scalenie i oznaczenie go jako konfliktu, niezależnie od tego, czy się powiedzie, czy nie. Ale to jest jak dotąd najbliższe rozwiązania. (... dzięki Charlesowi Baileyowi za wyjaśnienie ...)
- Ktoś sugeruje napisanie niestandardowego sterownika scalania ( 1 , 2 ), ale jak to zrobić, nie jest dla mnie jasne.
edycja: wariant 4. opis
git fetch
najpierw robię , a następnie używamgit difftool <file> FETCH_HEAD
, więc mogę ręcznie zastosować zmianę w oddziale zdalnym do lokalnego.