Другое

Что такое коммит 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. В зависимости от вашей ситуации можете воспользоваться любым из них.

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

NPM — руководство для начинающих: что такое npm run build и init
Другое

NPM — руководство для начинающих: что такое npm run build и init

Другое

Современные способы хранения данных на компьютере, ноутбуке или лаптопе

Что такое протокол ICMP, как и зачем его использовать
Другое

Что такое протокол ICMP, как и зачем его использовать

Трансатлантический кабель: как прокладывают кабель по дну океана
Другое

Трансатлантический кабель: как прокладывают кабель по дну океана