Opcje binarne konfliktowe konfliktowe
Można rozwiązać konflikty konfliktów przy użyciu wiersza polecenia i edytora tekstu. Konflikty konfliktów mogą się pojawić, jeśli konkurencyjne zmiany są wprowadzane do tej samej linii pliku lub gdy plik zostanie usunięty, który inna osoba próbuje edytować. Aby uzyskać informacje dotyczące rozwiązywania tych sytuacji, zobacz Konflikty konfliktu konfliktu linii i usuwanie konfliktów konfliktów plików. Konkurencyjne zmiany konfliktu linii Aby rozwiązać konflikt korespondencji seryjnej spowodowaną zmianami konkurencyjnymi linii, należy wybrać, które zmiany będą uwzględniane w różnych oddziałach w nowym poście. Na przykład jeśli Ty i inna osoba edytowali plik styleguide. md na tych samych liniach w różnych gałęziach tego samego repozytorium Git, podczas próby scalenia tych gałęzi wystąpią błędy konfliktu łączenia. Musisz rozwiązać ten konflikt konflikt z nowym zobowiązaniem, zanim będzie można scalić te oddziały. Otwórz terminal Terminal Git Bash. Przejdź do lokalnego repozytorium Git, który ma konflikt łączenia. Wygeneruj listę plików, których dotyczy konflikt scalania. W tym przykładzie plik styleguide. md ma konflikt łączenia. Otwórz swój ulubiony edytor tekstowy, taki jak Atom. i przejdź do pliku łączącego konflikty. Aby zobaczyć początek konfliktu łączenia w pliku, wyszukaj plik znacznika konfliktu ltltltltltltlt. Po otwarciu pliku w edytorze tekstu zobaczysz zmiany z gałęzi HEAD lub podstawy po wierszu ltltltltltltlt HEAD. Następnie zobaczysz. która dzieli Twoje zmiany z zmianami w innej gałęzi, a następnie gtgtgtgtgtgtgt BRANCH-NAME. W tym przykładzie jedna osoba napisała problem w bazie lub gałęzi HEAD, a inna osoba napisała zadanie w IRC w porównywanym oddziale lub oddziale-a. Zdecyduj, czy chcesz zachować tylko zmiany oddziałów, zachować tylko inne gałęzie zmiany, czy dokonać zupełnie nowej zmiany, która może zawierać zmiany z obu oddziałów. Usuń znaczniki konfliktów ltltltltltltlt. . gtgtgtgtgtgtgt i dokonaj zmian w ostatnim scaleniu. W tym przykładzie obie zmiany są uwzględniane w końcowym scaleniu: dodawanie lub modyfikowanie zmian. Załóż swoje zmiany za pomocą komentarza. Możesz teraz połączyć swoje oddziały w wierszu poleceń lub wcisnąć zmiany w repozytorium zdalnym na GitHub i połączyć ich zmiany w żądaniu ściągania. Usunięcie konfliktu konfliktów plików Aby rozwiązać konflikt łączenia spowodowany konkurującymi zmianami w pliku, w którym osoba usunie plik w jednej gałęzi, a inna osoba dokonuje edycji tego samego pliku, należy wybrać opcję usunięcia lub zatrzymania usuniętego pliku w nowym zatwierdzeniu. Na przykład jeśli edytowałeś plik, na przykład README. md. a inna osoba usunęła ten sam plik w innej gałęzi w tym samym repozytorium Git, podczas próby scalenia tych oddziałów wystąpi błąd konfliktu korespondencji seryjnej. Musisz rozwiązać ten konflikt konflikt z nowym zobowiązaniem, zanim będzie można scalić te oddziały. Otwórz terminal Terminal Git Bash. Przejdź do lokalnego repozytorium Git, który ma konflikt łączenia. Wygeneruj listę plików, których dotyczy konflikt scalania. W tym przykładzie plik README. md ma konflikt łączenia. Otwórz swój ulubiony edytor tekstowy, taki jak Atom. i przejdź do pliku łączącego konflikty. Zdecyduj, czy chcesz zachować usunięty plik. Najnowsze zmiany wprowadzone do usuniętego pliku można edytować w edytorze tekstowym. Aby dodać usunięty plik z powrotem do repozytorium: Aby usunąć ten plik z repozytorium: Załóż swoje zmiany za pomocą komentarza. Możesz teraz połączyć swoje oddziały w wierszu poleceń lub wcisnąć zmiany w repozytorium zdalnym na GitHub i połączyć ich zmiany w żądaniu ściągania. Dalsze czytanie Używaliśmy Git w systemie Windows (msysgit), aby śledzić zmiany w niektórych projektach, które robiłem. Dzisiaj pracowałem nad innym komputerem (z repo brian) i teraz staram się połączyć te edycje dzisiaj z powrotem do mojej regularnej wersji lokalnej na moim laptopie. Na moim laptopie, Ive używany git pull brian master wyciągnąć zmiany do mojej lokalnej wersji. Wszystko było w porządku bez głównego dokumentu programu InDesign - jest to konflikt. Wersja na komputerze (brian) jest ostatnią, którą chcę zachować, ale nie wiem, jakie komendy mówi repo, aby użyć tego. Próbowałem bezpośrednio skopiować plik na mój laptop, ale to zdaje się złamać cały proces scalania. Czy ktoś może mnie wskazać w dobrym kierunku Zitrax Czy diff plik po uruchomieniu git checkout - ours. Strona man'a sugeruje (IMHO), że checkout --ours - ich usunie zmiany z modyfikowanego szablonu, potrzebujesz listy mergequot i dodaj ją do indeksu i uważam, że nie jest poprawne. Wierzę, że będziesz musiał uruchomić dodawanie git po wyewidencjonowaniu. ndash Tim Keating May 13 13 at 21:06 Możesz także pokonać ten problem powodując, że git tworzy lokalnie kopie konfliktowego binarnego i spawnuje na nich domyślny edytor: Oczywiście nie można edytować poprawnie plików binarnych w edytorze tekstowym. Zamiast tego możesz skopiować nowy plik. REMOTE bez zamykania edytora. Następnie po zamknięciu edytora git zobaczysz, że nie została wykonana kopia robocza, a konflikt konfliktu został rozwiązany w zwykły sposób. Jeśli pliki są duże lub nie chcesz ryzykować otwierania binarnego w edytorze tekstu, możesz nacisnąć ctrlc w wierszu polecenia mergetool (zwróć Hit, aby uruchomić narzędzie do scalania rozdzielczości), a git opuści dodatkowe pliki w odpowiednim miejscu. Następnie można je zmodyfikować lub połączyć je z zewnętrznym narzędziem (przydatne w przypadku formatów dokumentów binarnych, np. LibreOfficeOpenOfficeMSWord) i zapisać wynik z powrotem do oryginalnej nazwy pliku. Aby poinformować git, że konflikt zostanie rozwiązany, git dodaj oryginalną nazwę pliku, a następnie można zakończyć zatwierdzanie scalenia. ndash Felix 24 sierpnia 15 at 21:54 Aby rozwiązać problem, zachowując wersję w bieżącym oddziałie (zignoruj wersję z gałęzi, w której się scalasz), wystarczy dodać i zatwierdzić plik: Aby rozwiązać problem, zastępując wersję w bieżącym oddziałie w wersji z gałęzi, którą się łączysz, musisz najpierw pobrać jej wersję do katalogu roboczego, a następnie dodać ją do listy: Ive natknąć się na dwie strategie zarządzania diffmerge plików binarnych z Git w systemie Windows. Żółw git umożliwia konfigurowanie narzędzi diffmerge dla różnych typów plików w oparciu o ich rozszerzenia. Patrz 2.35.4.3. Ustawienia zaawansowane DiffMerge Tortoisegit. orgdocstortoisegittgit-dug-settings. html. Ta strategia opiera się na dostępnych narzędziach diffmerge. Za pomocą atrybutów git można określić narzędzie narzędziowe, aby przekonwertować plik binarny na tekst, a następnie pozwolić, aby domyślne narzędzie diffmerge wykonało swoją czynność. Zobacz git-scmbookitv2Customizing-Git-Git-Attributes. Artykuł zawiera nawet przykład użycia meta danych do diff obrazów. Dostałem obie strategie do pracy z binarnymi plikami modeli oprogramowania, ale udaliśmy się z gitem żółwia, ponieważ konfiguracja była łatwa. Odpowiedziała 27 listopada 14 w 15:46 Jeśli binarne jest coś więcej niż dll lub coś, co można edytować bezpośrednio, jak obraz lub plik mieszania (i nie musisz trashselect jeden plik lub inne) prawdziwy scalenie byłoby niektórzy podobają się: proponuję wyszukać narzędzie diff zorientowane na to, jakiego pliku binarnego, na przykład są bezpłatne pliki do plików graficznych i porównywać je. Jeśli nie ma innego narzędzia do porównywania plików, to jeśli masz oryginalny generator pliku bin (tzn. Istnieje taki edytor), jak blender 3d, możesz ręcznie sprawdzić te pliki, logs i zapytaj drugą osobę o to, co powinieneś dodać) i wykonać plik z git-scmbookesv2Git-Tools-Advanced-Mergingmanualremerge git show: 1: hello. blend gt hellomon. blend git show: 2: hello. blend gt hello. ours. blend git show: 3: hello. blend gt hello. theirs. blend Answer 13 Aug 15 at 21:03 Twoja odpowiedź 2017 Stack Exchange, IncmERGE STRATEGIES Mechanizm scalania (polecenia git merge i git pull) umożliwia łączenie elementów zaplecza strategie do wyboru z opcją - s. Niektóre strategie mogą także przyjąć własne opcje, które można przekazać podając argumenty - Xltoptiongt do git merge andor git pull. To może rozwiązać tylko dwie głowy (tj. Bieżący oddział i inna gałąź, którą wyciągnąłeś) przy użyciu algorytmu łączenia trzech ścieżek. Stara się starannie wykryć niejednoznaczności w łączeniu krzyżowym i jest ogólnie uważana za bezpieczną i szybką. To może rozwiązać tylko dwie głowy za pomocą algorytmu łączenia 3-drogowego. Jeśli istnieje więcej niż jeden wspólny przodek, który może być użyty do scalenia trójwymiarowego, tworzy połączone drzewo wspólnych przodków i używa go jako drzewa odniesienia dla łączenia trójwymiarowego. Zgłoszono, że powoduje to mniej konfliktów konfliktów, nie powodując mismerges przez testy wykonane w rzeczywistych scaleniach podjęte z historii rozwoju jądra Linux 2.6. Dodatkowo może wykryć i obsługiwać połączenia, które wymagają zmiany nazw. Jest to domyślna strategia łączenia podczas przeciągania lub łączenia jednej gałęzi. Strategia rekursywna może uwzględniać następujące opcje: Ta opcja zmusza zmagających się myśliwych do automatycznego rozwiązywania problemów, sprzyjając naszej wersji. Zmiany z innego drzewa, które nie są sprzeczne z naszą stroną, są odzwierciedlone w wynikach scalenia. Dla pliku binarnego cała zawartość jest pobierana z naszej strony. Nie należy tego mylić z naszą strategią scalania, która nawet nie spogląda na to, co inne drzewo zawiera w ogóle. Odrzuca wszystko inne drzewo, stwierdzając, że nasza historia zawiera wszystko, co się w niej wydarzyło. To jest przeciwieństwo naszych. Dzięki tej opcji scalanie-rekurencyjne spędza trochę czasu, aby uniknąć rozmaitych błędów, które zdarzają się niekiedy z powodu nieistotnych pasujących linii (na przykład nawiasów klamerkowych z różnych funkcji). Użyj tego, gdy rozgałęzienia, które mają zostać scalone, rozbłagały się dziko. Zobacz też git-diff1 - cierpliwość. Powtarza merge-recursive, aby zastosować inny algorytm diff, który może pomóc uniknąć mismerges, które występują z powodu nieistotnych pasujących linii (takich jak nawiasy kluczy z różnych funkcji). Zobacz też git-diff1 --diff-algorytm. ignore-space-change ignore-all-space ignore-space-at-eol Traktuje wiersze ze wskazanym typem zmian białych znaków jako niezmienione w celu połączenia trójkierunkowego. Zmiany w białej przestrzeni zmieszane z innymi zmianami w linii nie są ignorowane. Zobacz też git-diff1 - b. - w i --jak-przestrzeń-na-eol. Jeśli ich wersja wprowadza tylko zmiany szeregu białego do linii, nasza wersja jest używana Jeśli nasza wersja wprowadza zmiany w białych odstępach, ale ich wersja zawiera znaczną zmianę, używana jest ich wersja W przeciwnym wypadku scalanie odbywa się w zwykły sposób. Prowadzi to do wirtualnego sprawdzania i zameldowania wszystkich trzech etapów pliku podczas rozwiązywania trójstronnego scalenia. Opcja ta ma być użyta podczas łączenia oddziałów z różnymi czystymi filtrami lub normalizacją końca linii. Zobacz rozdział Łączenie gałęzi z odmiennymi atrybutami checkincheckout w gitattributes5, aby uzyskać szczegółowe informacje. Wyłącza opcję renormalizacji. Spowoduje to zastąpienie zmiennej konfiguracji merge. renormalize. Wyłącz detekcję zmiany nazwy. Zobacz także git-diff1 --no-renames. Włącz funkcję wykrywania nazw, opcjonalnie ustawiając próg podobieństwa. Jest to ustawienie domyślne. Zobacz także git-diff1 --find-renames. Nieaktualny synonim dla find-renamesltngt. Opcja ta jest bardziej zaawansowaną formą strategii drzewa podrzędnego, w której strategia pozwala odgadnąć, jak dwa drzewa muszą zostać przesunięte, aby dopasować się do siebie nawzajem podczas łączenia. Zamiast tego, określona ścieżka jest poprzedzona (lub usunięta od początku), aby dopasować kształt dwóch drzew. Rozwiązuje się przypadki z więcej niż dwoma głowicami, ale odmawia złożonego scalenia wymagającego ręcznej rozdzielczości. Ma przede wszystkim być używany do łączenia gałęzi głowicy tematycznej razem. Jest to domyślna strategia łączenia podczas pobierania lub łączenia więcej niż jednego oddziału. Spowoduje to rozwikłanie dowolnej liczby głowic, ale powstałe drzewo scalania jest zawsze obecne w gałęzi oddziału, skutecznie ignorując wszystkie zmiany ze wszystkich innych gałęzi. Ma być wykorzystana do zastąpienia starej historii rozwoju oddziałów bocznych. Należy zauważyć, że jest to odmienne od opcji - Xours do rekurencyjnej strategii łączenia. Jest to zmodyfikowana strategia rekurencyjna. Podczas łączenia drzew A i B, jeśli B odpowiada poddrzewie A, B jest najpierw dostosowywany do struktury drzewa A, zamiast czytać drzewa na tym samym poziomie. Dostosowanie to dotyczy również wspólnego drzewa przodków. Dzięki strategiom, które wykorzystują 3-kierunkowe scalanie (w tym domyślne, rekursywne), jeśli zmiana jest dokonywana na obu gałęziach, ale później zwrócona na jednej z gałęzi, ta zmiana będzie obecna w połączonym wyniku, niektórzy uważają, że to zachowanie jest mylące . Występuje, ponieważ podczas scalania są brane pod uwagę jedynie głowy i baza scalania, a nie pojedyncza osoba zobowiązana. Algorytm scalania w związku z tym uważa zmianę zwróconą wcale wcale wcale wcale i w zamian zastępuje zmienioną wersję. Ta otwarta strona pochodzi z GitHub. Witamy, poprawki, sugestie i komentarze.
Comments
Post a Comment