2256

Git shit

Git сложен: легко всё проебать, и трудно понять как исправить. Документация Git - это финиш: чтобы найти решение, тебе заранее надо знать название фишки, которая вернет всё на место.

Популярно опишу несколько ситуаций, из которых мне пришлось выбираться:

Бля, я накосячил, где у git волшебная машина времени!?!

Git shit Программирование, Git, Юмор, Мат, Длиннопост, Github

Используйте это, чтобы вернуть случайно удалённые штуки или убрать то, чем вы всё сломали, или восстановиться после неудачного слияния, или просто вернуться туда, когда всё работало. Я ОЧЕНЬ ЧАСТО использую reflog. Снимаю шляпу перед теми, кто предложил добавить это.

Бля, я закоммитил и вспомнил, что кое-что забыл!

Git shit Программирование, Git, Юмор, Мат, Длиннопост, Github

Обычно я это использую, когда коммичу, потом запускаю тесты/сканеры... и блин, я не поставил пробел после знака равно. Также можно сделать изменения в новом коммите и использовать rebase -i чтобы склеить оба коммита вместе, но так в миллион раз быстрее.

Предупреждение: никогда не изменяйте коммиты, отправленные в публичную ветку! Изменяйте только коммиты в вашей локальной ветке, иначе вам пиздец.

Бля, мне нужно изменить сообщение моего последнего коммита!

Git shit Программирование, Git, Юмор, Мат, Длиннопост, Github

Ебаные требования по наименованию.

Бля, Я случайно закоммитил что-то в мастер, хотя это должно быть в новой ветке!

Git shit Программирование, Git, Юмор, Мат, Длиннопост, Github

NB: это не будет работать, если вы уже отправили коммит в удалённую ветку, и если вы пробовали сделать это как-то по-другому, может помочь git reset HEAD@{количество-коммитов-назад} вместо HEAD~. Ёбушки-воробушки. Так же многие люди предлагали сделать то же самое, но короче. Спасибо всем!

Бля, я случайно закоммитил не в ту ветку!

Git shit Программирование, Git, Юмор, Мат, Длиннопост, Github

Многие люди предлагали использовать cherry-pick в такой ситуации, так что выбирайте, то что вам больше нравится!

Git shit Программирование, Git, Юмор, Мат, Длиннопост, Github

Бля, я пытаюсь открыть diff, но ничего не происходит?!

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

Git shit Программирование, Git, Юмор, Мат, Длиннопост, Github

Бля, мне нужно отменить коммит, который был 5 коммитов назад!

Git shit Программирование, Git, Юмор, Мат, Длиннопост, Github

Вам не нужно откатываться назад и копипастить старый файл в существующий! Если вы закоммитили хрень, её можно убрать с revert.

Также можно отменить только один файл вместо целого коммита! Но конечно, (как всегда у git`а) это совершенно другой набор чёртовых команд...

Бля, мне нужно отменить изменения в файле!

Git shit Программирование, Git, Юмор, Мат, Длиннопост, Github

Когда до меня это дошло, это было ОХУЕННО. Если серьезно, то схуяли checkout -- лучший способ отменять изменения? :угрожает-линусу-торвальдсу:

Нахуй всё, я сдаюсь.

Git shit Программирование, Git, Юмор, Мат, Длиннопост, Github

Спасибо Eric V. за эту подсказку. Все жалобы по поводу использованию sudo в этой шутке могут быть направлены сразу ему.

Вообще говоря, если ваша ветка настооолько загажена, что нужно вернуться к удалённому состоянию в "git-корректном стиле" попробуйте это, но это необратимо!

Git shit Программирование, Git, Юмор, Мат, Длиннопост, Github

https://ohshitgit.com/ru