Jak mogę powiedzieć gitowi, aby ignorował mój plik lokalny i pobierał ten z mojej zdalnej gałęzi bez próby scalenia i powodowania konfliktów?
Jak mogę powiedzieć gitowi, aby ignorował mój plik lokalny i pobierał ten z mojej zdalnej gałęzi bez próby scalenia i powodowania konfliktów?
Odpowiedzi:
To najbezpieczniejsze rozwiązanie:
git stash
Teraz możesz robić, co chcesz, bez obawy o konflikty.
Na przykład:
git checkout origin/master
Jeśli chcesz uwzględnić zdalne zmiany w gałęzi głównej, możesz zrobić:
git reset --hard origin/master
Spowoduje to, że gałąź „master” wskaże na „początek / wzorzec”.
git stash; git fetch origin; git reset --hard origin/master
git stash? git stash listjest pusty.
Rozumiem to pytanie tak: chcesz całkowicie zastąpić zawartość jednego pliku (lub zaznaczenia) z nadrzędnego. Nie chcesz bezpośrednio wpływać na indeks (więc jak zwykle przechodzisz przez add + commit).
Po prostu zrób
git checkout remote/branch -- a/file b/another/file
Jeśli chcesz to zrobić dla obszernych poddrzew i zamiast tego chcesz bezpośrednio wpływać na indeks, użyj
git read-tree remote/branch:subdir/
Następnie możesz (opcjonalnie) zaktualizować swoją kopię roboczą, wykonując
git checkout-index -u --force
Rozumiem, że na przykład błędnie zapisałeś plik, który zaktualizowałeś tylko do celów testowych. Następnie, kiedy uruchomisz "git status", plik pojawi się jako "Zmodyfikowany" i wypowiesz kilka złych słów. Chcesz po prostu przywrócić starą wersję i kontynuować normalną pracę.
W tym scenariuszu możesz po prostu uruchomić następujące polecenie:
git checkout -- path/filename
Pobrałbym zdalny plik z "master" (repozytorium zdalnego / pochodzenia) w następujący sposób:
git checkout master <FileWithPath>
Przykład: git checkout master components / indexTest.html
Użyj opcji -slub --strategypołączonej z -Xopcją. W swoim konkretnym pytaniu chcesz zachować wszystkie zdalne pliki i zastąpić pliki lokalne o tej samej nazwie.
Zastąp konflikty wersją zdalną
git merge -s recursive -Xtheirs upstream/master
użyje wersji repozytorium zdalnego wszystkich plików będących w konflikcie.
Zastąp konflikty wersją lokalną
git merge -s recursive -Xours upstream/master
użyje wersji lokalnego repozytorium wszystkich plików będących w konflikcie.
git merge -s their.