Prowadziłem taki, git pull
który zakończył się konfliktem. Rozwiązałem konflikt i teraz wszystko jest w porządku (skorzystałem także z narzędzia scaletool).
Po zatwierdzeniu rozwiązanego pliku pojawia git commit file.php -m "message"
się błąd:
fatal: cannot do a partial commit during a merge.
Miałem wcześniej ten sam problem i użycie -a
w zatwierdzeniu działało idealnie. Myślę, że nie jest to idealny sposób, ponieważ nie chcę zatwierdzać wszystkich zmian. Chcę zatwierdzić pliki osobno z osobnymi komentarzami. Jak mogę to zrobić? Dlaczego git nie pozwala użytkownikom na zatwierdzanie plików osobno po scaleniu? Nie mogłem znaleźć zadowalającej odpowiedzi na ten problem.
Odpowiedzi:
Odkryłem, że dodanie „-i” do polecenia commit naprawia ten problem. -I w zasadzie mówi mu, aby wykonał dodatkowe pliki przed zatwierdzeniem. To jest:
źródło
Stage additional files
znaczygit add
, co powodujegit commit
niepowodzenie. Dodanie-i
kazałoby gitowi dodać i zatwierdzić w tym samym czasie. Nadal nie jestem pewien, dlaczego, ale wydaje się to mieć sens.To zadziałało dla mnie. Możesz także tego spróbować.
źródło
Możesz użyć
git commit -i
w większości przypadków, ale na wypadek, gdyby to nie zadziałałoMusisz to zrobić
git commit -m "your_merge_message"
. Podczas konfliktu scalania nie możesz scalić jednego pliku, więc musiszgit add your_file.txt
)git commit -m "your_merge_message"
źródło
Prawdopodobnie masz konflikt z czymś, czego nie wystawiłeś do zatwierdzenia. git nie pozwala ci na samodzielne zatwierdzanie rzeczy (bo to chyba część scalania), więc potrzebujesz
git add
tego pliku, a potemgit commit -m "Merge conflict resolution"
.-i
Flaga dlagit commit
robi dodatek dla Ciebie.źródło
commit -i
działało, ale niegit add; git commit
Dostałem to, gdy zapomniałem
-m
w git commit podczas rozwiązywania konfliktu scalania git.Powinien być
źródło
Jak pokazuje komunikat o błędzie, po scaleniu nie można wykonać częściowego zatwierdzenia. Zamiast popełniania tylko
file.php
powinieneś zatwierdzić wszystkie zmiany.To powinno działać.
źródło
Twoja fuzja zatrzymała się w trakcie akcji. Powinieneś dodać swoje pliki, a następnie „git commit”:
git add file_1.php file_2.php file_3.php git commit
Twoje zdrowie
źródło
Jeśli chcesz po prostu zrzucić cały zbiór pobrań i zatwierdzić pliki w dowolnych zestawach,
doprowadzi cię tam.
Miękki reset powoduje przesunięcie wskaźnika wskazującego bieżącą HEAD do zatwierdzonego (ish) podanego pliku, ale nie zmienia plików. Twardy reset spowoduje przesunięcie wskaźnika, a także przywrócenie wszystkich plików do stanu w tym zatwierdzeniu (ish). Oznacza to, że przy miękkim resecie możesz usunąć stan scalenia, ale zachować zmiany w rzeczywistych plikach, a następnie zatwierdzić lub zresetować je indywidualnie według własnych upodobań.
źródło
źródło
Dla mnie stało się to w SourceTree, gdy próbowałem dokonać scalenia przed rozwiązaniem wszystkich plików. Następnie zaznaczyłem ostatni plik rozwiązany, a mimo to nadal pojawił się ten błąd podczas próby zatwierdzenia. Zamknąłem SourceTree i otworzyłem go ponownie, a potem wszystko poszło dobrze.
źródło
Rozwiązałem to z zupełnie innym podejściem, używając tylko kontroli źródła Xcode.
Tło: Inny zespół wprowadził zmiany do zdalnego repozytorium Git (przez Beanstalk). Z mojej strony pliki .xcodeproj weszły do innego katalogu i zmiany nie zostały wprowadzone. Później, gdy próbowałem dokonać zatwierdzenia, w Xcode wystąpił błąd konfliktu drzewa.
Ponieważ prawie niemożliwe jest poprawienie za pomocą Xcode, zastąpiłem
.xcodeproj
plik pobraną wersją z serwera Git. Rezultat ... projekt Xcode najwyraźniej się wyczyścił, jednak wszystkie aktualizacje z uszkodzonego Pulla pojawiały się jako zmiany, które wprowadziłem i zostały zainscenizowane dla Commit.Jednak podczas próby zatwierdzenia otrzymałem ten sam błąd „krytyczny: nie mogę wykonać częściowego zatwierdzenia podczas scalania”, omówiony tutaj.
Oto jak rozwiązałem problem ... (Teraz zrozum, że jestem programistą debiutantów, więc mogłem nie rozumieć ... ale moja ignorancja doprowadziła mnie do znalezienia innego sposobu na zrobienie tego.) Najpierw sklonowałem mojego mistrza Rozgałęzienie na oddział dodatkowy i przejście na ten oddział. Następnie utworzyłem kopię roboczą i umieściłem katalog w tej kopii roboczej poza oryginalnym katalogiem projektu. (Nie wiem, czy było to konieczne, ale zrobiłem to, czytając inne techniki rozwiązywania problemów). Następnie przełączyłem gałęzie na master, gdzie zdałem sobie sprawę, że wszystkie moje pliki etapowe (zmiany w Commit) zniknęły. Aby upewnić się, że wszystkie pliki zostały zaktualizowane do najnowszych zmian wprowadzonych przez drugą stronę, utworzyłem nowy oddział o nazwie ThirdBranch, który zduplikował wszystkie pliki, Przekazałem go do serwera Git i pozwól Beanstalk porównać moją wersję serwerową gałęzi master z gałęzią ThirdBrach, którą właśnie wypchnąłem (linia po linii), a wszystkie zmiany wprowadzone przez drugą stronę były obecne na moim Xcode. Oznaczało to, że moje główne repozytorium i główne repozytorium Git były takie same, co potwierdza, że rozwiązałem problem tylko za pomocą Xcode.
Nie pytaj mnie, jak poza tym, co właśnie opisałem ... i na pewno uzupełnij luki, które pominąłem. Jestem w tym nowy i nie rozumiem wszystkiego. Być może doświadczony programista może oddzielić nieistotne informacje od odpowiednich i odtworzyć tę technikę jaśniej, a to po części dlatego publikuję to.
To jest zduplikowana odpowiedź na zduplikowane pytanie z: Nieudane Xcode Git Merge utknął
źródło
Podczas łączenia Git chce śledzić oddziały nadrzędne z różnych powodów. To, co chcesz zrobić, nie jest scaleniem, jak widzi to git. Prawdopodobnie będziesz chciał zrobić rebase lub wybrać ręcznie.
źródło
git commit -i -m 'merge message'
nie działało dla mnie. Powiedziało:fatal: No paths with --include/--only does not make sense.
FWIW, dostałem się tutaj przez to powiązane pytanie, ponieważ otrzymywałem ten komunikat:
fatal: You have not concluded your merge (MERGE_HEAD exists).
Spróbowałem też narzędzia scaletool, które powiedziało
No files need merging
. Bardzo mylące! Więc MERGE_HEAD nie ma w pliku, który wymaga scalenia- ??Na koniec skorzystałem z tej sztuczki, aby dodać tylko zmodyfikowane pliki (nie chciałem dodawać wszystkich plików w moim drzewie, ponieważ mam kilka, które chcę zachować bez śledzenia):
git ls-files -m | xargs git add
W końcu (!) Byłem w stanie dokonać zatwierdzenia i przyspieszenia. Byłoby miło, gdyby git dał ci lepsze wskazówki, co robić w takich sytuacjach.
źródło
Jeśli znajduje się w drzewie źródłowym , powinniśmy jawnie oznaczyć plik jako rozwiązany po rozwiązaniu konfliktów. Wybierz plik, który został właśnie rozwiązany, bez konfliktów. Następnie Akcje -> Rozwiąż konflikty -> Oznacz jako rozwiązane . Jeśli masz wiele plików, zrób to samo dla wszystkich. Zaangażuj się teraz.
źródło
Po przeczytaniu wszystkich komentarzy. to była moja rezolucja:
musiałem ją „dodać” jeszcze raz, niż zatwierdzić:
źródło
Jeśli korzystasz z drzewa źródłowego lub innego GUI, upewnij się, że wszystkie pliki są sprawdzone (po scaleniu).
źródło
Czasami podczas łączenia pojawiają się konflikty i istnieją delty wymagające ręcznego rozwiązania. W takim przypadku napraw ręczną rozdzielczość dla wymienionych plików.
Teraz, jeśli wydajesz,
Zobaczysz wynik jak
Ponieważ już wystawiłeś zatwierdzenie, potrzebujesz tylko wydania
A twoje zatwierdzenie zostanie wykonane bez żadnych problemów.
źródło