Другое

Что такое коммит git? Как вернуться (откатиться) к более раннему коммиту?

Когда разработка идет «по-мелкому», тогда, возможно, разработчики и не сталкиваются с 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. В зависимости от вашей ситуации можете воспользоваться любым из них.

Схожие статьи

Код ошибки NTFS file system. Как убрать этот синий экран смерти?
Другое

Код ошибки NTFS file system. Как убрать этот синий экран смерти?

Как выровнять изображение по центру в HTML: основы CSS для новичков
Другое

Как выровнять изображение по центру в HTML: основы CSS для новичков

Чаты и Телеграм-каналы для программистов: выбираем лучшие из лучших
Другое

Чаты и Телеграм-каналы для программистов: выбираем лучшие из лучших

Методология Agile и Scrum для чайников: в чем разница и преимущества?
Другое

Методология Agile и Scrum для чайников: в чем разница и преимущества?

×