git оформити всі файли


127

Як я можу позбутися всіх змін у всіх файлах мого сховища?

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

Я знаю, що можу зробити наступне, щоб оформити лише один файл:

git checkout -- <file>

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

Я перевірив man git checkoutі нічого не зміг знайти. Також я побачив Git: Оформити всі файли, окрім одного, і спробував git checkout .і не працював.

Чи довелося б мені це робити програмно, перебираючи на git checkout --виході?

Відповіді:


194

Якщо ви знаходитесь в корені робочого каталогу, ви можете git checkout -- .перевірити всі файли в поточній HEAD і замінити локальні файли.

Ви також git reset --hardможете скинути робочий каталог та замінити всі зміни (включаючи індекс).


два варіанти еквівалентні (якщо ми перезавантажимо HEAD)?
lucidbrot

10
Ні, є певні відмінності. Наприклад, git checkout -- .буде скинуто зміни лише до стану індексу. Отже, якщо ви вже додали файли до індексу, це те, що він буде скинутий. З іншого боку git reset --hard, індекс також викине індекс, так що, наприклад, якщо до індексу були додані незавершені файли (для початку їх відстеження), вони також будуть видалені. git checkoutтакож дозволяє лише частково відновити робочий каталог, пройшовши більш конкретний шлях, який може бути дуже корисним.
ткнути


4
@poke Привіт Poke, я впевнений, git checkout -. не працює. Я спробував це для декількох нестандартних змін.
Аман

2
інші команди , щоб досягти того ж результату: git checkout --force,git reset --hard
Тьяллінг

3

Інший спосіб, який я вважаю корисним, це:

git checkout <wildcard> 

Приклад:

git checkout *.html

Більш загально:

git checkout <branch> <filename/wildcard>

1
Якщо на вашій оболонці увімкнено глобалізацію, а в робочій директорії є незафіксовані файли, це не вдасться, якщо ви не уникнете зірочки, наприклад, git checkout \*або git checkout '*'.
Джош Кулі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.