Як повернутися до версії файлу головного відділення походження


425

Я перебуваю в головному відділенні свого локального комп'ютера клонованого майстра-гілки репо з віддаленого сервера.

Я оновив файл, і я хочу повернутись до початкової версії з віддаленої гілки ведучого.

Як я можу це зробити?

Відповіді:


874

Якщо припустити, що ви не зробили файл або додали його до індексу, то:

git checkout -- filename

Якщо припустити, що ви додали його до індексу, але не ввели його, тоді:

git reset HEAD filename
git checkout -- filename

Якщо припустити, що ви це зробили, то:

git checkout origin/master filename

Припустимо, що ви хочете зняти всі зобов’язання зі своєї філії (ДУЖЕ ДЕСТРУКТИВНО):

git reset --hard origin/master

43
Третій варіант сильно відрізняється від перших двох варіантів тим, що він торкається всіх файлів, а не лише одного файлу. Ви можете вказати на це більш чітко. Також чому б не рекомендувати git checkout HEAD filenameі git checkout origin/master filenameдля варіантів один і два, було б більш послідовно?
CB Bailey

5
@CharlesBailey: Я додав git checkout origin/master filenameваріант відповіді gahooa.
Френк

2
@cilphex знімає всі зобов’язання у вашій поточній галузі
WattsInABox

1
Я випадково перезавантажив відділення від гілкиB і мені потрібно було скинути майстер місцевого відділення. git reset --hard masterодне було моїм рішенням, оскільки я не хотів звертатися до походження. Дякую.
тако

3
@gahooa Мабуть, це має бути git checkout - ім'я файлу, що, якщо файл називається "master", тоді ви отримаєте поведінку, яка не була призначена.
user2602152

50

Я зіткнувся з тією ж проблемою і натрапив на цю тему, але моя проблема була в upstream. Нижче команда git працювала на мене.

Синтаксис

git checkout {remote-name} / {відділення} - {файл / шлях.js}

Приклад

git checkout streamstream / development - public / js / index.js


0

Якщо ви ще не взяли його в головну галузь, це просто:

  • зійти з ведучої гілки (подобається git checkout -b oops/fluke/dang)
  • вчинити там свої зміни (як git add -u; git commit;)
  • повернутися до головного відділення (як git checkout master)

Ваші зміни будуть збережені у гілці Oops / fluke / dang; майстер буде як був.

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