Запустил 'git checkout HEAD'. в неправильном каталоге

К сожалению, я случайно запустил команду "get checkout HEAD". в неправильном каталоге. Он выдал вывод «Обновлено 2 пути из 2096756f», но я понятия не имею, каковы были мои локальные изменения. Я предполагаю, что не могу узнать, но мне интересно, как я могу защитить себя в будущем, поскольку эта команда - это то, как я обычно отбрасываю локальные изменения. Могу ли я создать для этого какой-то псевдоним, который защитит меня от такой ошибки в будущем?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
24
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

I accidentally ran 'get checkout HEAD .' in the wrong directory.

Это плохо.

It produced the output 'Updated 2 paths from 2096756f' but I have no idea what my local changes were.

И если у вас нет локальных резервных копий (снимков zfs, macOS Time Machine и т. д.), они просто исчезнут. Git не может помочь вам вернуть их: вы сказали Git удалить их из вашего рабочего дерева, и он это сделал.

I assume that I can't find out,

Если ваша ОС хранит время модификации файлов, найдите два последних измененных файла. Это будут те два, которые git checkout HEAD . перезаписали.

I am wondering how I can protect myself in the future as this command is how I habitually discard local changes.

Измените свои привычки. Вы не можете использовать встроенную команду Git. Вы могу создаете собственный git псевдоним или git команду, которая:

  1. проверяет, используете ли вы что-то «безопасное», или проверяет, используете ли вы эту конкретную команду;
  2. если вы используете что-то, что вы считаете «безопасным», запускает настоящую команду Git с теми же аргументами, но если вы используете git checkout HEAD ., жалуется и не делает этого.

Поскольку вы пишете эту команду или псевдоним самостоятельно, вы можете выбрать, что будет в разделе «но» шага 2. Это (предположительно) заставит вас изменить свои привычки.

(Я стараюсь использовать git status, а затем git restore -- path/to/file в эти дни, чтобы знать, что я восстанавливаю; я могу вырезать и вставить имя файла из git status здесь.)

Я нашел предложение искать недавно измененные файлы особенно полезным, спасибо.

wytten 10.05.2022 21:03

Is there some alias I can create that for this that would protect me from such a mistake in the future

Нет. checkout опасен, и Git не защитит вас от вас самих.

Но отличная защита — отказаться от использования checkout. Вместо этого используйте switch и restore. Они значительно затрудняют совершение пагубной ошибки.

Другие вопросы по теме