1

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

Попробовал исправить, создал еще пару новых коммитов.

Теперь хочу удалить все лишние коммиты, как это сделать через pycharm не используя консоль?

Коммиты еще не отправлены на сервер. Использую PyCharm 2016.3.1 и Debian 8

Nick Volynkin
  • 34,094
EmptyMan
  • 579
  • 2
    Воспользоваться консолью... – Qwertiy Jan 24 '17 at 15:10
  • @Qwertiy если без консоли никак, то так и сделаю. Пишу git hist и выводит git: 'hist' is not a git command. See 'git --help'. – EmptyMan Jan 24 '17 at 15:16
  • @EmptyMan правильно, нет такой команды. Алиас может быть ) – Nick Volynkin Jan 24 '17 at 15:20
  • git rebase -i и в гугл. – Qwertiy Jan 24 '17 at 15:27
  • @NickVolynkin не понимаю. – EmptyMan Jan 24 '17 at 15:28
  • @EmptyMan вы можете настроить короткие «ярлыки» для сложных команд git, это называется alias или псевдоним. Например, так: git config --global alias.lg log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow ul)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all – Nick Volynkin Jan 24 '17 at 15:33
  • А потом вместо этой сложной команды пишете просто git lg. – Nick Volynkin Jan 24 '17 at 15:37

3 Answers3

4

Попробовал исправить, создал еще пару новых коммитов

Вы же разработчик, используйте консоль. Это интерпретатор языка программирования Bash. По мощности и функциональности превосходит GUI настолько же, насколько программирование клавиатурой превосходит программирование мышкой.

  1. Найдите тот коммит, к которому нужно возвращаться (в котором был ненужный файл задет). Вам поможет

    git log
    

    Посмотрите, какой коммит был перед этим. В логе нужно найти sha-1 этого предыдущего коммита. Выглядит как много букв и цифр, вроде a1ds23fef6rde.... Скопируйте в буфер или просто запомните первые несколько символов, их будет достаточно.

  2. Теперь мы вернём ветку к предыдущему коммиту.

    git reset --soft a1ds23^
    

    Теперь ваша ветка переставлена обратно на тот коммит, который был до инцидента. А в индексе уже добавлены все изменения из последующих коммитов.

  3. «Забудьте» те изменения, которые не нужно включать в коммит с помощью

    git reset path/to/file
    

    Обратите внимание, в этот раз reset без параметра --soft!

  4. Теперь можно делать новый коммит.

    git commit
    
  5. Если оставшиеся изменения нужны, но ещё не готовы — просто продолжайте работу. Если же их нужно удалить, можно использовать эту команду:

    # ОСТОРОЖНО, это удаляет несохранённые изменения
    git reset --hard
    
Nick Volynkin
  • 34,094
0

PyCharm 2020.1, Windows 10

VCS - Git - Show history

В контекстном меню коммита "Undo Commit..."

0

в PyCharm внизу выбираешь 9:Git => Вкладка Log => нажимаешь на комит правой клавишей и выбираешь Undo commit => Ok