Когда разработка идет «по-мелкому», тогда, возможно, разработчики и не сталкиваются с Git-системами, потому что в их использовании просто нет смысла. Например, если заниматься разработкой одностраничных сайтов, то Git не нужен. Но когда разработка ведется над серьезными проектами, тогда Git обязательно присутствует.
Git — это виртуальная система управления версией исходного кода программы. С помощью Git можно создавать «контрольные точки» в разработке. Например, над программой работают несколько разработчиков какое-то время. Появились первые результаты, которые удовлетворяют требования к программе, тогда их фиксируют. Далее над программой продолжается работа. Если что-то пошло не так, тогда всегда есть возможность вернуться в «контрольную точку» и продолжать работать над программой. Если изменения всех устраивают, тогда фиксируют следующую «контрольную точку» и т. д. Таким образом появляется ветвь развития программы с «контрольными точками», к которым всегда можно вернуться.
Благодаря Git, над программами можно экспериментировать. Например, с определенной «контрольной точки» можно развивать несколько ветвей программы с различным экспериментальным функционалом, а потом выбрать что лучше.
Что такое коммит в Git?
Каждая «контрольная точка», о которых мы писали чуть выше, на профессиональном сленге называется коммит. По сути, коммит Git — это некий пакет с кодом, который хранит предыдущую версию программы с добавленными изменениями.
Когда над программой ведется активная работа, коммиты создаются довольно часто. Среди разработчиков ходит негласное правило, что в один коммит добавляют до 10 важных изменений программы, но в каждой команде цифра изменений может быть разная. Из-за небольшого количества вносимых изменений коммитов получается много. Однако такое положение нужно для того, чтобы всегда была возможность откатить изменения до последнего работающего коммита с минимальными потерями в коде. К примеру, если вносить по 100 изменений в один коммит и на каком-то этапе обнаружить ошибку в программе, тогда нужно будет откатить Git-комит и потерять сразу 100 изменений, а если в коммите содержатся только по 10 изменений, тогда будет потеряно только 10.
Откатить коммит в Git — это довольно частая задача, потому что главное правило программирования звучит просто: ошибки допускают все независимо от квалификации программиста. В принципе, Git-система как раз была придумана для того, чтобы программисты в случае чего не возвращались в самое начало рабочего процесса, а всего лишь к ближайшему рабочему коммиту.
Благодаря коммитам в Git, разработчики отлично могут работать в команде, которая имеет разные взгляды на разработку. Допустим есть некая программа, которая зафиксирована в определенном коммите. Перед командой стоит задача организовать какой-то дополнительный функционал. Реализовать функционал можно по-разному, на этом фоне возникают споры. В этом случае команда легко может разделиться и создать несколько рабочих веток программы от общего коммита, чтобы проверить гипотезу разработки нужного функционала.
В общем, коммит и Git — это неразделимые вещи и о них можно много говорить. Сегодня хотелось бы подробнее остановиться на одной важной вещи — показать, как в Git откатить изменения до последнего работающего коммита.
Git: откатить изменения до работающего коммита
На самом деле, откатить коммит в Git — это не совсем простая задача. Вернее она может быть простой в определенных ситуациях, например, когда вы работаете над программой самостоятельно и от вашего коммита зависит только ваша работа. Таким образом вы легко можете удалять, добавлять, откатывать коммиты — всё это происходит исключительно под вашим контролем. Сложнее в Git откатить изменения до какого-то коммита, когда над программой работают несколько разработчиков в нескольких ветках и каждый ваш коммит может быть использован другими разработчиками. В общем, ситуации могут быть разными, поэтому будьте осторожны и внимательны. А мы покажем как можно откатиться к коммиту несколькими способами, а вы уже выберите тот, который подходит именно вам.
Удаляем неопубликованные коммиты
Этот способ вам подойдет, если вы пока еще не опубликовали коммиты в репозитории, например в GitHub. Для этого действия используется простая команда:
$ git reset - -hard
Работать с этой командой нужно осторожно, потому что она безвозвратно удаляет неопубликованные коммиты и можно потерять что-то стоящее, из того что было в коде. Если вы не до конца уверены, что хотите полностью удалить неопубликованный коммит или просто хотите пока сохранить новые изменения, чтобы потом их доработать, если что, тогда воспользуйтесь более щадящей командой:
$ git stash
Эта команда откатит вас до последнего коммита, но сохранит все созданные вами изменения, не добавляя их в основную ветку.
Удаляем опубликованные коммиты
Может быть такая ситуация, что вы внесли изменения в код и отправили их в GitHub. В этом случае, если использовать команду «reset», тогда можно нарваться на большие неприятности, потому что с помощью этой команды переписывается история. Не будем вдаваться в подробности, но скажем, что вам это не нужно
В данном случае лучше воспользоваться командой:
$ git revert
С помощью этой команды происходит простая отмена внесенных изменений в конкретном коммите, над которым вы до сих пор работали. Фактически создается новый коммит без удаления предыдущих, тем самым сохраняется история удаленного репозитория и не наносится большой вред.
Временно откатить коммит в Git
Для этого используется команда:
$ git checkout
Фактически она отменяет фиксацию последнего коммита и позволяет вам временно вернуться к предыдущему в вашем репозитории. В само дерево разработки никаких изменений не вносится. Перед вами открывается содержимое предыдущего коммита и вы даже можете вносить в него изменения и потом зафиксировать для дальнейшего использования.
Заключение
Сегодня мы вас познакомили с коммитами в Git. Теперь вы знаете, что коммит в Git — это «контрольная точка», к которой вы можете всегда вернуться и продолжить работу над программой именно с нее.
В процессе работы с Git и коммитами очень важный навык — это умение откатить изменения до коммита в Git, который вас устраивал. Мы показали несколько способов как можно откатить коммит в Git. В зависимости от вашей ситуации можете воспользоваться любым из них.
Другое