Magit повернути один файл


78

Питання в основному режимі Magit для функції Emacs і тим більше в тому, як це зробити за допомогою інтерфейсу командного рядка.

У мене є лише локальне сховище Git. Як відновити вибраний файл до попередньої версії? Я вважаю, що команда Git для цього має бути щось на зразок, git checkout HEAD^ path/to/fileале я теж тут можу помилятися, просто здогадуючись насправді.

Я шукаю по суті те саме, що і C-x v uв vc-dirбуфері.

По суті, я сподівався зробити це:

  • видалити змінений файл.

  • витягнути з місцевого репо.

Але Magit , здається, не може цього зробити, схоже, воліє просто видалити файл, а не відновлювати його.

git  emacs  magit 

(1) Буфер історії Magit однозначно підтримує, що (хоча я не пам’ятаю як), чи потрібні вам інші засоби (наприклад, in *magit-status*)? (2) Якщо ви хочете повернутися лише до базової бази, чому б не використати vcдругорядний режим C-x v u?
lukstafi

1
Ви говорите про скасування незафіксованих змін (тобто повернення до поточно встановленої версії) або повернення до попереднього коміту? git checkout HEAD fileвідкине незмінені зміни. git checkout HEAD^ fileтакож поверне зміни (якщо такі є), внесені у файл у останньому коміті до сховища. Якщо цей коміт не включав відповідний файл, тоді файл ^фактично зайвий. Проводячи свій підсумок "видалення та витягування", ви просто хочете відкинути незміщені зміни, і в цьому випадку відповідь Ремі - та, яку ви хочете.
phils

Відповіді:


91

У Magit вам просто потрібно перейти до комбінації або файлу, який ви хочете повернути, і використати, kщоб відхилити модифікацію. Дивіться відповідну документацію за адресою https://magit.vc/manual/1.4/magit/Staging-and-Committing.html для більш детальної інформації.


1
Дія залежить від того, де ви її використовуєте. Він видалить файл, якщо файл не відстежується git. Але якщо файл відстежується, він відхиляє модифікацію. Зверніть увагу, що після того, як ваш файл знаходиться у git, важко повністю видалити його з історії.
Ремі,

3
Я думаю, що цілком обґрунтовано його можна використовувати і в зворотному порядку: після того, як commitви зафіксували файл разом з іншими змінами, ви можете revertз v, а потім kі зворотні зміни, де ви хочете зберегти зміни.
lukstafi

29

З відкритим файлом ви можете M-x magit-file-checkout.


яка версія emacs / magit?
dr jerry

1
Доступно з Magit 2.3.0.
Razzi Abuissa

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