Возврат одного файла в GitKraken

Возможно ли в GitKraken отменить изменения одного файла до более раннего коммита, а не отменить весь коммит?

6 ответов

Решение

Ответ

revert в git-смысле это может быть выполнено только при коммите. Он вводит новый коммит, который точно отменяет изменения отмененных коммитов. Смотрите здесь. GitKraken поддерживает это: щелкните правой кнопкой мыши на коммите, Revert <branch> to this commit,

Однако то, что вы хотите достичь, может быть сделано через git checkout, Я не думаю, что GitKraken поддерживает эту функциональность для одного файла. Вы можете, однако, использовать командную строку.

Сброс одного файла через командную строку

git checkout <commit> <file>

Проверьте предыдущую версию файла. Это превращает <file> который находится в рабочем каталоге в точную копию одного из <commit> и добавляет его в область подготовки.

Документацию можно найти здесь.

git checkout HEAD~1 <filename> таким образом, сбросит один файл до фиксации до текущего HEAD,

Вы можете сделать это в пользовательском интерфейсе GitKraken, но это немного обходится:

  • Верните самые последние коммиты обратно туда, где был удален файл, но когда GitKraken спросит, хотите ли вы немедленно зафиксировать реверсию, нажмите нет.
  • Отменить все изменения
  • Установите только добавление для файла, который вы пытаетесь восстановить
  • Щелкните правой кнопкой мыши в Unstaged и отменить все

Это должно оставить вам только добавление для одного файла, который вы хотите восстановить. Передайте это, и теперь у вас есть один файл обратно.

Обратите внимание, что это может работать с многочисленными коммитами, а не только с одним... но так как ему придется откатывать все из всех этих коммитов, а затем отбрасывать все откаты (кроме одного), это может быть довольно медленным, если связано с массивным изменения. В подобных ситуациях, вероятно, лучше использовать git CI, как это предлагается в ответе Ковски.

Хотя это не означает строго использование git команд, GitKraken предлагает возможность визуализировать содержимое любого файла проекта в любой момент commit.

При работе с одним файлом может быть намного проще скопировать / вставить содержимое целевого файла фиксации, чем использовать сложные git команды, которые вполне могут в конечном итоге испортить историю коммитов вашего проекта.

Для этого просто:

  • Откройте свой проект git в GitKraken
  • Щелкните желаемый коммит в строке истории коммитов
  • В правой панели, установите просмотреть все файлы флажок
  • Найдите нужный файл проекта и щелкните по нему
  • Содержимое файла будет отображаться на главной панели.
  • Теперь вы можете скопировать / вставить содержимое

Просто и эффективно, когда вам нужно только восстановить очень ограниченное количество файлов...

GitKraken 7.3.0 (вероятно, и более старые версии) позволяет эффективно запускать git checkout для одного файла в пользовательском интерфейсе: щелкните правой кнопкой мыши файл в разделе «неустановленные файлы» и выберите «отменить изменения». Работает и с папками.

(Этот ответ ранее был комментарием к принятому ответу)

Вы можете выполнить UNDO для последнего коммита, отредактировать его, а после этого сделать Force push, чтобы перезаписать его. Работает очень хорошо

Надеюсь, GitKraken сможет это сделать, как и TortoiseGit.

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