Як відмовитись від нестандартних змін у Git?


4816

Як я відкидаю зміни в робочій копії, які не входять до індексу?


9
git-cleanвидаляє лише невирішені файли з робочого дерева git-scm.com/docs/git-clean
Єга

24
Щоб уточнити коментар Асенера вище, git-clean -dfможе бути небезпечно. Він видалить локальні файли, що не відслідковуються (наприклад, охоплені .gitignore) Прочитайте уважно все нижче та розгляньте git checkout. натомість
jacanterbury

15
'git clean -df' Попередження! Я спробував це і втратив ключові папки, які неможливо відновити ... О!
Габе Карканіс

46
натискання git statusдає пропозицію, як це зробити! git checkout -- .
Пауло

4
@Paulo: починаючи з липня 2019 року, git statusдає пропозицію: git restore. git restoreє новою командою саме для цієї мети. Дивіться оновлення 2019 року .
prosoitos

Відповіді:


2684

Ще один швидший спосіб:

git stash save --keep-index --include-untracked

Вам не потрібно включати, --include-untrackedякщо ви не хочете бути ретельними щодо цього.

Після цього ви можете скинути цю скриньку за допомогою git stash dropкоманди, якщо хочете.


122
І щоб бути ретельним щодо цього, ви також хотіли б --include-untracked.
TJ Crowder

9
@KarimSamir: У запитанні конкретно задаються зміни, які відсутні в індексі . git resetКоманда буде скасувати зміни в індексі теж.
Грег Х'югілл

146
git checkout -. набагато швидше
Френк

38
Ні git stash, ні будь-яка різноманітність git checkoutне відкидає нестандартні делети. Відповідно до результатів git status, справжня правильна відповідь тут є деяким ароматомgit reset HEAD
Кріс Уорт

127
Це забруднює схований стек. git checkout -- .виконує завдання лише однією командою.
Феліпе Тонелло

5336

Для всіх нестандартних файлів у поточному робочому каталозі використовуйте:

git checkout -- .

Для конкретного використання файлу:

git checkout -- path/to/file/to/revert

--тут, щоб усунути двозначність аргументів .


117
Це, здається, є git канонічним способом. тобто саме те, що git підкаже зробити, якщо ви наберетеgit status
ABMagil

27
Не працює, якщо є незавершені файли. Гіт каже error: The following untracked working tree files would be overwritten by checkout: ....
Майкл Ілз

92
новачок питання, що означає "git checkout -." означають семантично?
каїд

120
@Ninjack git checkout -- .означає те саме, що git checkout ., за винятком того, що ви чітко заявляєте про те, що ви не визначаєте ім'я гілки. Вони обоє кажуть, що перевірити версію HEAD у гілці, на якій я зараз перебуваю '.' або './'. Якщо ви git checkout branch-name directory-or-file-nameвзагалі працюєте, ви отримуєте версію HEAD directory-or-file-nameна гілці branch-name.
akgill

23
IMO цей варіант недосконалий, оскільки він не обробляє ситуацію, коли змінене сховище не перебуває в редакції HEAD на момент очищення змін, і ви НЕ хочете оновити його до HEAD, а хочете просто очистити зміни.
alexykot

1898

Схоже, повне рішення таке:

git clean -df
git checkout -- .

git cleanвидаляє всі незаймані файли ( попередження : хоча він не видалить ігноровані файли, згадані безпосередньо у .gitignore, він може видалити ігноровані файли, що знаходяться у папках ) та git checkoutочистить усі незмічені зміни.


116
Два інших відповіді насправді не спрацьовують.
Джон Хант

18
@dval це, тому що перша команда видалила невпорядковані файли, а друга видалила незазначені зміни (індексованих файлів). Тож якщо у вас не було жодних поетапних змін, це те саме, що повернутися до останнього зобов’язання зgit reset --hard
Амануїл Нега

3
використовуйте -dff, якщо каталог без відстеження є клоном git.
accuya

87
Будьте обережні, запускаючи git clean -df. Якщо ви не розумієте, що це робить, ви можете видалити файли, які ви хочете зберегти, як robots.txt, завантажені файли тощо
ctlockey

40
Як сказав @ctlockey, перша команда також видаляє каталоги, якщо вони складаються лише з ігнорованих файлів ... Втратив цілу купу файлів конфігурації в моєму проекті :( Будьте уважні.
Maxime Lorant

326

Це перевіряє поточний індекс для поточного каталогу, викидаючи всі зміни файлів із поточного каталогу вниз.

git checkout .

або це, що перевіряє всі файли з індексу, перезаписуючи робочі файли дерева.

git checkout-index -a -f

28
Привіт, в чому різниця між git checkout .і git checkout -- .?
Еван Ху

5
@Evan: У цьому випадку різниці немає.
Роберт Сімер

10
@ Роберт Сімер і взагалі?
RJFalconer

2
@Evan: погане місце, щоб задати це питання. - Це не пов'язане з питанням про ОП, і тут не пов'язане з відповіддю.
Роберт Сімер

14
+1 Це ПРАВИЙ ВІДПОВІДЬ, оскільки він правильно обробляє випадок, коли деякі файли мають як поетапні, так і нестадійні зміни. Зауважте, що це рішення відхиляє нестандартні зміни; якщо ви хочете їх зберегти, то вам слід скористатися відповіддю @ greg-hewgill від git stash save --keep-index.
Ревінь

248
git clean -df

Очищає робоче дерево, рекурсивно видаляючи файли, які не перебувають під контролем версій, починаючи з поточного каталогу.

-d: Видаліть не відстежені каталоги на додаток до файлів, що не відслідковуються

-f: Сила (може бути не потрібна залежно від clean.requireForceналаштування)

Запустіть, git help cleanщоб переглянути посібник


чому ця відповідь не має всіх голосів? відповів ще в 2011 році і досі є правильним.
Євген Брагінець

106

Моя улюблена

git checkout -p

Це дозволяє вибірково повертати шматки.

Дивись також:

git add -p

9
Мені подобається можливість бачити фактичну зміну, перш ніж її відкинути.
Penghe Geng

Це те, що я використовую. git checkout -p, а потім "a", щоб прийняти всіх.
Меттіс

2
Я ніколи про це не думав. Це -pдодає приємного додаткового рівня безпеки. Поєднайте його, git clean -dщоб реально відповісти на ОП.
Стефан Геннінгсен

96

Оскільки жодна відповідь не підказує точну комбінацію варіантів, яку я використовую, ось вона:

git clean -dfx
git checkout .

Це онлайн-довідковий текст для використаних git cleanпараметрів:

-d

Видаліть незатрековані каталоги на додаток до файлів, що не відслідковуються. Якщо каталог без відстеження керується іншим сховищем Git, він не видаляється за замовчуванням. Скористайтеся -fопцією двічі, якщо ви дійсно хочете видалити такий каталог.

-f

Якщо змінна конфігурації Git clean.requireForceне встановлено false, Git чистий відмовить видаляти файли або каталоги , якщо не дано -f, -nабо -i. Git відмовиться видаляти каталоги в .gitпідкаталозі або файлі, якщо не -fбуде вказано секунду .

-x

Не використовуйте правила ігнорування з .gitignore(за каталогом) $GIT_DIR/info/exclude, але все ж використовуйте правила ігнорування, задані -eпараметрами. Це дозволяє видалити всі незафіксовані файли, включаючи збірку продуктів. Це можна використовувати (можливо, спільно з git reset) для створення незайманого робочого каталогу для перевірки чистої збірки.

Також git checkout .потрібно зробити в корені репо.


+1 для цього рішення. Що стосується Вашого зауваження, що "git checkout. Потрібно робити в корені репо", можливо, ви можете сказати, що ми можемо зробити це git reset --hardзамість цього? (що насправді еквівалентно git reset --hard HEADта має працювати, залежно від поточного каталогу ...)
ErikMD

2
Щодо першої команди git clean -dfx, ось рада, яку я використовую, щоб бути захищеною перед її виконанням: просто запустіть git clean -d -x -nраніше, щоб відобразити список файлів, які підлягають видаленню, а потім підтвердіть операцію запуском git clean -d -x -f(я ставлю аргумент -n, -fзрештою, щоб мати можливість швидко змінити його в терміналі)
ErikMD

5
Швидко зауважте, що це неможливо, і якщо у вас є файли, .gitignoreви втратите їх. Тому подумайте про створення резервного копіювання свого проекту перед цим.
Роб

69

Якщо ви просто хочете видалити зміни до існуючих файлів , скористайтеся checkout( тут задокументовано ).

git checkout -- .
  • Жодна гілка не вказана, тому вона перевіряє поточну гілку.
  • Подвійний дефіс ( --) повідомляє Git, що далі слід сприймати його як другий аргумент (шлях), що ви пропустили специфікацію гілки.
  • Період ( .) вказує на всі шляхи.

Якщо ви хочете видалити файли, додані з моменту останнього вчинення, скористайтеся clean( тут задокументовано ):

git clean -i 
  • В -iопції ініціює інтерактивний clean, для запобігання помилкових видалень.
  • Існує кілька інших варіантів для швидшого виконання; дивіться документацію.

Якщо ви хочете перемістити зміни до місця зберігання для подальшого доступу , використовуйте stash( тут задокументовано ):

git stash
  • Усі зміни будуть переміщені в скриньку Git для можливого подальшого доступу.
  • Є декілька варіантів для більш нюансованого зберігання; дивіться документацію.

Це точно перетворить ваші зміни та відкине нещодавно додані файли з попередніх комісій.
Йохан Чунг

підтримав це для пояснення :)
Арчі Г.

62

Я дійсно вважав цю статтю корисною для пояснення, коли використовувати яку команду: http://www.szakmeister.net/blog/2011/oct/12/reverting-changes-git/

Є кілька різних випадків:

  1. Якщо ви ще не створили файл, тоді ви використовуєте git checkout. Оформити замовлення "оновлення файлів у робочому дереві, щоб відповідати версії в індексі". Якщо файли не були поетапно (вони також додані до індексу) ... ця команда по суті поверне файли до того, яким було ваше останнє введення.

    git checkout -- foo.txt

  2. Якщо ви інсценували файл, використовуйте скидання git. Скидання змінює індекс на відповідність коміті.

    git reset -- foo.txt

Я підозрюю, що використання git stash- це популярний вибір, оскільки це трохи менш небезпечно. Ви завжди можете повернутися до нього, якщо випадково здуєте занадто сильно, використовуючи скидання git. За замовчуванням скидання є рекурсивним.

Перегляньте статтю вище для отримання додаткових порад.


60

Найпростіший спосіб зробити це за допомогою цієї команди:

Ця команда використовується для скасування змін у робочому каталозі -

git checkout -- .

https://git-scm.com/docs/git-checkout

У команді git, зберігання відслідковуваних файлів досягається за допомогою:

git stash -u

http://git-scm.com/docs/git-stash


19
Двічі я приїжджав сюди, читав цю відповідь і .на кінець забув . Для мене в майбутньому: період важливий !
бежадо

2
Мені потрібно було позбутися всіх локальних змін у підкаталозі, не здуваючи будь-яких інших змін. Ця відповідь дуже допомогла, дякую
Аллі

2
Опишіть, будь ласка, що виконують дві команди. Дійсно, не пояснювати пояснень.
Кріс Кеннеді

2
відмінна. каси виконуються в одній команді, що найпопулярніша - у двох. можна також виконувати git clean -fdчистку файлів, які не входять до індексу.
олігофрен

49

Якщо ви не зацікавлені у збереженні нестандартних змін (особливо якщо поетапні зміни - це нові файли), я вважаю це зручним:

git diff | git apply --reverse

44

git checkout -f


man git-checkout:

-f, --force

Під час перемикання гілок дійте, навіть якщо індекс або робоче дерево відрізняється від HEAD. Це використовується для викидання локальних змін.

Перевіряючи шляхи з індексу, не відмовляйтесь від неперевірених записів; натомість незаряджені записи ігноруються.


2
Це відкине зміни в індексі !! (І ОП вимагає залишити їх такими, як є.)
Роберт Сімер

44

Під час введення статусу git (використовуйте "git checkout - ...", щоб відмовитись від змін у робочому каталозі) .

напр git checkout -- .


1
Незважаючи на те, що це не допомагає швидко видалити всі файли. Три точки вказують на те, що вам потрібно перерахувати всі файли. Це особливо погано, якщо вам потрібно відразу відкинути тонни файлів, наприклад. під час великого злиття після того, як ви здійснили всі модифікації, які ви хочете зберегти
usr-local-ΕΨΗΕΛΩΝ

2
Звичайно, правильною командою є "git checkout -." одна крапка. У коментарі три крапки були граматичною річчю, щоб вказати, що є багато інших варіантів, які можна було б використати ..
Йозеф Б

39

Ви можете використовувати git stash - якщо щось піде не так, ви все одно можете повернути його. Подібно до деяких інших відповідей тут, але цей також видаляє всі нестандартні файли, а також усі нестандартні видалення:

git add .
git stash

якщо ви перевірите, що все в порядку, викиньте сховище:

git stash drop

Відповідь від Білала Максуда git cleanтакож працював на мене, але з приховуванням я маю більший контроль - якщо я щось робити випадково, я все одно можу повернути свої зміни

ОНОВЛЕННЯ

Я думаю, що є ще 1 зміна (не знаю, чому це працювало для мене раніше):

git add . -A замість git add .

без -Aвидалених файлів не буде інсценовано


38

Оновлення 2019 року:

З липня 2019 року , там була нова команда , яка робить саме це: git restore.

В git status, тепер Git рекомендує використовувати цю команду замість того , щоб, git checkoutяк раніше.

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

Отже, щоб відновити файли, які відповідають шляху проспекту (позбувшись від їх нестандартних змін), слід зробити:

git restore <pathspec>

Наприклад, для відновлення всіх нестандартних змін у поточному каталозі ви можете запустити:

git restore .

Якщо запустити це з кореня проекту, він відновить усі нестандартні зміни у всьому сховищі.

Зауважте, що, як git checkout -- .і вказує (як зазначав Маріуш Новак), це скасує лише зміни у файлах, відслідковуваних Git, і не відкине будь-які нові незатребувані файли. Якщо ви хочете відмовитись від будь-яких нестандартних змін, включаючи нові незатребувані файли, ви можете запустити додаткову:

git clean -df

Будьте дуже обережні з цією пізнішою командою, однак ви можете відкинути файли, яких ви не збиралися позбуватися.


Примітка git restore. Оскільки це нова команда, її довідкова сторінка дає попередження:

Ця команда експериментальна. Поведінка може змінитися.

Тому можливо, що ця відповідь може застаріти, якщо поведінка зміниться в майбутньому. Таким чином, може бути розумним швидко пробігти man git-restoreперед його використанням.


2
Я хотів відновити свої нестандартні зміни лише без впливу на щойно додані файли, тому git restore .працював ідеально. Дякую.
Саураб Місра

3
Я це зробив, git restore <filename>і це прекрасно працювало.
Мерлін

1
Для мене добре працювали.
Прометей

1
Відповідно до сторінки man git restore .відновлює всі файли в поточному каталозі, а не у всьому сховищі.
jarno

1
Ти правий. Дякую! Я просто перевірив це, і справді це так. Однак це рекурсивно. Тож при запуску з кореня проекту він застосовується до всього сховища. Я відредагую свою відповідь.
prosoitos

35

Замість того, щоб відміняти зміни, я скидаю пульт на початок. Примітка. Цей метод полягає в тому, щоб повністю відновити папку до репо-репо.

Тому я роблю це, щоб переконатися, що вони не сидять там, коли я git скидає (пізніше - виключає gitignores на Origin / name name)

ПРИМІТКА. Якщо ви хочете, щоб файли ще не відслідковувались, але не знаходяться у GITIGNORE, можливо, ви захочете пропустити цей крок, тому що це буде видалено ці незафіксовані файли, які не знайдено у вашому віддаленому сховищі (спасибі @XtrmJosh).

git add --all

Потім я

git fetch --all

Потім я скидаюсь до походження

git reset --hard origin/branchname

Це поверне його до прямої. Так само, як повторне клонування гілки, при цьому всі мої файли gitignored зберігаються локально та на місці.

Оновлено за коментарями користувача нижче: Варіант для скидання до поточної гілки користувача.

git reset --hard @{u}

Це мій кращий варіант, але чому ви спочатку додаєте всі зміни? Наскільки я знаю, це лише змінює список каталогів у файлах Git, при використанні скидання git --hard, це все одно буде втрачено, поки каталоги все одно будуть видалені.
XtrmJosh

Я не маю на Mac або Linux, github windows powershell іноді залишає файли там після скидання. Я думаю, що це тому, що скидання git встановлює всі файли репо в початковий стан. Якщо вони не додані, вони не торкаються. Потім настільний клієнт підбере "ей, цей файл знаходиться тут і його потрібно зробити"
Нік

Сенс зроблений. Я не використовую Windows, тому не бачив цієї проблеми (не використовував Windows принаймні кілька останніх місяців, не пам’ятаю багато чого раніше - це одне величезне жалю розмиття). Можливо, варто відзначити обґрунтування у вашій головній відповіді :)
XtrmJosh

Зараз я натрапив на цю проблему на Mac. Якщо файл не відстежується в Repo, іноді git reset не торкається його. Я не можу по-справжньому ізолювати "ЧОМУ", але коли це станеться, якщо я перезавантажуюсь, і у мене все ще є 1 непосланий файл або два, я додаю - все та скидаю
Нік

2
Приємна невелика варіація цього, що мені подобається, - це те, git reset --hard @{u}що скидає гілку туди, де знаходиться поточна гілка дистанційного відстеження
user2221343

31

Спробував усі рішення вище, але все-таки не зміг позбутися нових, нестандартних файлів.

Використовуйте git clean -fдля видалення цих нових файлів - проте з обережністю! Зверніть увагу на силовий варіант.


21

просто сказати

git stash

Це видалить усі ваші локальні зміни. Ви також можете використовувати пізніше, сказавши

git stash apply 

або git stash pop


21

Просто використовуйте:

git stash -u

Зроблено. Легко.

Якщо ви дійсно піклуєтесь про свій стек-скрипт, тоді ви можете слідувати git stash drop. Але в цей момент вам краще скористатися (від Маріуша Новака):

git checkout -- .
git clean -df

Тим не менш, мені подобається git stash -uнайкраще, тому що він "відкидає" всі відслідковані та не відстежені зміни лише в одній команді . Але git checkout -- .тільки відкидаються відслідковувані зміни, і лише відкидається відслідковувані зміни git clean -df... а введення обох команд - це занадто велика робота :)


Примітка: git stash -uв недалекому часу (Git 2.14.x / 2,15, Q3 2017) еволюціонують небагато: stackoverflow.com/a/46027357/6309
VonC

Якщо у мене з’являється питання щодо ОП, правильно індексовані файли слід зберігати. Необхідно видалити лише нестабільні зміни. Так має бути git stash -kна мою думку.
оснастка

21

Щоб зробити постійну відмову: git reset --hard

Щоб зберегти зміни на потім: git stash


16

Це працює навіть у каталогах, які є; поза нормальними дозволами на git.

sudo chmod -R 664 ./* && git checkout -- . && git clean -dfx

Сталося зі мною недавно


Але остерігайтеся, що вміст, проігнорований git, не збереже його оригінальні дозволи! Отже, це може спричинити загрозу безпеці.
doublejr

@twicejr Ви помиляєтесь, будь ласка, прочитайте git help clean"-d Видалити не відстежувані каталоги на додаток до відслідковуваних файлів."
GlassGhost

Чому ви встановили всі ваші файли для читання / запису у всьому світі? Недобра практика.
Ghoti

@Goti мій поганий, 664 правильно? ви також можете редагувати відповідь.
GlassGhost

Встановлення всіх дозволів на 664 дає багато припущень щодо того, який тип дозволів потребує проект. Я думаю, що використання цієї частини команди викличе проблеми у деяких людей.
ianrandmckenzie


14
cd path_to_project_folder  # take you to your project folder/working directory 
git checkout .             # removes all unstaged changes in working directory

12

На мою думку,

git clean -df

повинен зробити трюк. Відповідно до документації на Git clean

git-clean - Видаліть неробочені файли з робочого дерева

Опис

Очищає робоче дерево, рекурсивно видаляючи файли, які не перебувають під контролем версій, починаючи з поточного каталогу.

Зазвичай видаляються лише невідомі Git файли, але якщо вказано параметр -x, ігноровані файли також видаляються. Наприклад, це може бути корисно для видалення всіх будівельних виробів.

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

Параметри

-d Видаліть не відслідковувані каталоги на додаток до файлів, що не відслідковуються. Якщо каталог без відстеження керується іншим сховищем Git, він не видаляється за замовчуванням. Використовуйте параметр -f двічі, якщо ви дійсно хочете видалити такий каталог.

-f --force Якщо змінна конфігурація Git clean.requireForce не встановлена ​​на false, git clean відмовиться запускатися, якщо не задано -f, -n або -i.


11

Незалежно від того, в якому стані знаходиться ваше РЕПО, ви завжди можете скинути будь-яку попередню комісію:

git reset --hard <commit hash>

Це відкине всі зміни, які були внесені після цього зобов’язання.


2
Це також відкине все в індексі (не лише речі, не в індексі), що виходить за рамки того, про що вимагає ОП.
Лінус Арвер

10

Ще один спосіб позбутися нових файлів, більш конкретний, ніж git clean -df (він дозволить позбутися деяких файлів не обов'язково всіх), - це додати нові файли до індексу спочатку, потім сховати, а потім скинути сховок.

Цей прийом корисний, коли з якихось причин ви не можете легко видалити всі незатребувані файли за допомогою звичайного механізму (наприклад, rm).


9

Далі насправді є лише рішенням, якщо ви працюєте з виделкою сховища, де ви регулярно синхронізуєте (наприклад, запит на витягування) з іншим репо. Коротка відповідь: видаліть виделку та переформатуйте, але прочитайте попередження на github .

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

Я часто маю такі повідомлення про статус git (як мінімум 2/4 файлів):

$ git status
# Not currently on any branch.
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   doc/PROJECT/MEDIUM/ATS-constraint/constraint_s2var.dats
#       modified:   doc/PROJECT/MEDIUM/ATS-constraint/parsing/parsing_s2var.dats
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   doc/PROJECT/MEDIUM/ATS-constraint/constraint_s2Var.dats
#       modified:   doc/PROJECT/MEDIUM/ATS-constraint/parsing/parsing_s2Var.dats

Пильне око відзначить, що у цих файлах є доппленергери, які є однією буквою у разі відключення. Чомусь, і я поняття не маю, що призвело мене до початку цього шляху (оскільки я сам не працював з цими файлами з репо-версії за течією), я переключив ці файли. Спробуйте, чимало рішень, перелічених на цій сторінці (та інших сторінках), схоже, не допомагають.

Мені вдалося виправити проблему, видаливши своє роздрібнене сховище та всі локальні сховища та переформувавшись. Одного лише цього було недостатньо; вище за течією довелося перейменувати ці файли у нові імена файлів. Поки у вас немає жодної некомплектної роботи, вікі-файлів і жодних проблем, що розходяться із сховищем верхнього потоку, у вас повинно бути добре. На найменшій мірі, можливо, вас не дуже порадує. Що стосується моєї проблеми, це, безсумнівно, помилка користувача, оскільки я не є тим, хто володіє git, але факт, що виправити бали на проблемі з git також далеко не просто.


7

Коли ви хочете передати сховище комусь іншому:

# add files
git add .  
# diff all the changes to a file
git diff --staged > ~/mijn-fix.diff
# remove local changes 
git reset && git checkout .
# (later you can re-apply the diff:)
git apply ~/mijn-fix.diff

[редагувати], як коментується, можна назвати скриньки. Ну, використовуйте це, якщо ви хочете поділитися своїм сховищем;)


5
Насправді Git Stash може мати назву. Наприклад git stash save "Feature X work in progress".
Колін Д Беннетт

7

Ви можете створити свій власний псевдонім, який описує, як це зробити описовим способом.

Я використовую наступний псевдонім для відхилення змін.


Відхилити зміни у файлі (списку) робочого дерева

discard = checkout --

Тоді ви можете використовувати його як наступний, щоб скасувати всі зміни:

discard .

Або просто файл:

discard filename

В іншому випадку, якщо ви хочете відмовитись від усіх змін, а також відслідковуваних файлів, я використовую суміш з оформлення замовлення та очищення:

Очистіть та відкиньте зміни та непотрібні файли у робочому дереві

cleanout = !git clean -df && git checkout -- .

Тож використання просте, як і наступне:

cleanout

Тепер це доступно в наступному репо Github, який містить безліч псевдонімів:


7

У мене була дивна ситуація, коли файл завжди нестатований, це допомагає мені вирішити.

git rm .gitattributes
git add -A
git reset - твердий

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