Примусити перезаписати локальний файл тим, що знаходиться у початковому репо?


224

Я хочу отримати останній файл, що знаходиться у сховищі, і переписати те, що є у мене на локальному рівні. Як я можу це зробити з клієнтом git?

Відповіді:


443

Якщо ви хочете перезаписати лише один файл:

git fetch
git checkout origin/master <filepath>

Якщо ви хочете перезаписати всі змінені файли:

git fetch
git reset --hard origin/master

(Це передбачає, що ви працюєте на masterлокальному рівні і хочете зміни в походженнях master- якщо ви на гілці, замініть це замість цього.)


Це робило навпаки. Це помилково перезаписало сховище з моїми локальними файлами.
C_Rod

git fetch git reset --hard origin/masterабо/<branch name>
Адріан Філіпеску

Це чудово ... Саме те, що я шукав. Спасибі
Тіаго Пассос

Не впевнений, що зробив @C_Rod, але це не може вплинути на сховище
Бред Мейс

26

Найпростіша версія, якщо припустити, що ви працюєте в тій же гілці, на якій потрібний файл:

git checkout path/to/file.

Я роблю це так часто, що у мене встановлений псевдонім gc='git checkout'.


4
Простий, елегантний і робить свою роботу. Просто пам'ятайте, щоб "git fetch" раніше.
Альмір Кампос

6
git checkout path/to/fileпрацював на мене. Крім того, я знайшов цю діаграму дуже корисною, щоб зрозуміти концептуально, що git checkoutробиться. посилання
Cale Sweeney


3

Повна синхронізація має кілька завдань:

  • повернення змін
  • видалення нових файлів
  • отримати останню інформацію з віддаленого сховища

git reset HEAD - твердий

git clean -f

git pull master master

Інакше, що я віддаю перевагу, це те, що я можу створити нову гілку з останньою з віддаленого, використовуючи:

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

origin - це моє віддалене посилання на сховище, а master - це моя назва філії. Вони можуть відрізнятися від ваших.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.