Вернуться к последнему изменению git add - PullRequest
0 голосов
/ 30 октября 2018

Я работаю над git-репо и выдаю команду

$ git add .

для сохранения текущих изменений,

через 10 минут я случайно сделал несколько плохих изменений, поэтому хочу вернуться к последнему добавлению. состояние.

Я искал, но обнаружил, что есть только методы для сброса до последней фиксации.

Как я мог вернуться к состоянию десять минут назад.

1 Ответ

0 голосов
/ 30 октября 2018

Краткий ответ: вы не можете, git предлагает только способы возврата к предыдущим коммитам (например: материал, который вы коммитили, используя git commit)

Для дальнейшего использования: вы можете запустить git add . && git commit -m WIP, чтобы «сохранить текущие изменения»


Более длинный ответ: если возвращение предыдущей версии этого файла более важно, чем сохранение вашего психического здоровья, вы можете покопаться в списке висячих капель


Хех, я знал, что у меня где-то есть сценарий:

следующий скрипт выведет список недоступных больших двоичных объектов, которые еще не были упакованы в пакет объектов (как правило, это относится к последним большим двоичным объектам), и отсортирует их по дате создания (фактически: использует дату создания файла в диск как оценка того, когда был создан блоб)

#!/bin/sh

git fsck --no-reflogs --unreachable |\
    grep blob |\
    cut -d' ' -f3 |\
    sed -e 's|^\(..\)\(.*\)|.git/objects/\1/\2|' |\
    xargs ls -l -t 2> /dev/null

Некоторые объяснения:

# git fsck --unreachable  ,  if you also use "--no-reflogs" this will search
# through commits which could be reached by the reflog but not by live branches
git fsck --no-reflogs --unreachable |\

# only keep lines mentioning "blobs" (files)
    grep blob |\

# keep the 3rd field of the output (hash of blob)
    cut -d' ' -f3 |\

# turn hashes into filenames, e.g :
#   aee01f414061ea9b0bdbbc1f66cec0c357f648fe ->
#   .git/objects/ae/e01f414061ea9b0bdbbc1f66cec0c357f648fe
# (this will be the path of this single blob)
    sed -e 's|^\(..\)\(.*\)|.git/objects/\1/\2|' |\

# give this to ls -lt (list by modification time),
# discard messages saying "file does not exist"
    xargs ls -l -t 2> /dev/null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...