Wymusić zastąpienie pliku lokalnego repozytorium oryginalnego?

224

Chcę pobrać najnowszy plik z repozytorium i zastąpić to, co mam lokalnie. Jak mogę to zrobić za pomocą klienta git?

Blankman
źródło

Odpowiedzi:

443

Jeśli chcesz zastąpić tylko jeden plik:

git fetch
git checkout origin/master <filepath>

Jeśli chcesz zastąpić wszystkie zmienione pliki:

git fetch
git reset --hard origin/master

(Zakłada się, że pracujesz nad tym masterlokalnie i chcesz wprowadzić zmiany w źródle master- jeśli korzystasz z gałęzi, zastąp to w zamian).

Bursztyn
źródło
Zrobiło to odwrotnie. Błędnie nadpisał repozytorium moimi lokalnymi plikami.
C_Rod
git fetch git reset --hard origin/masterlub/<branch name>
adrian filipescu
To świetnie ... Dokładnie tego szukałem. Dzięki
Thiago Passos,
Nie wiesz, co @C_Rod zrobił, ale to nie może wpływać na repozytorium
Brad Mace
26

Najprostsza wersja, zakładając, że pracujesz w tej samej gałęzi, w której znajduje się żądany plik:

git checkout path/to/file.

Robię to tak często, że mam ustawiony alias gc='git checkout'.

JM Janzen
źródło
4
Prosty, elegancki i spełnia swoje zadanie. Pamiętaj tylko, aby wcześniej „pobrać git”.
Almir Campos
6
git checkout path/to/filepracował dla mnie. Uważam też, że ten schemat jest bardzo przydatny, aby zrozumieć koncepcyjnie, co git checkoutsię dzieje. link
Cale Sweeney
9

To działało dla mnie:

git reset HEAD <filename>
arn-arn
źródło
Widziałem całkiem sporo różnych rozwiązań, ale to jest najbardziej skuteczne, dzięki
Calvin Zhou,
3

Pełna synchronizacja ma kilka zadań:

  • cofanie zmian
  • usuwanie nowych plików
  • pobierz najnowsze ze zdalnego repozytorium

git reset HEAD --hard

git clean -f

git pull master master

Albo wolę, że mogę utworzyć nowy oddział z najnowszymi zdalnie, używając:

git checkout origin/master -b <new branch name>

origin to moje zdalne odwołanie do repozytorium, a master to moja rozważana nazwa oddziału. Mogą się różnić od twoich.

Chand Priyankara
źródło