[Программирование, Git, GitHub] Git — Быстрый старт

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
01-Июн-2021 18:32


Мы ежедневно работаем с системой контроля версий, как правило, это Git. Система контроля версий позволяет организовать совместную работу над проектом и отслеживать вносимые изменения, при этом мы можем выполнить откат к предыдущей версии, если потребуется.Новички быстро осваивают Git и начинают использовать его в работе. Но иногда может потребоваться откатится к предыдущей версии и сделать это нужно правильно. Эта задача нередко ставит новичков в тупик.Чтобы начать работу с системой контроля версий Git вам необходимо создать репозиторий на GitHub или GitLab.Необходимо клонировать созданный репозиторий. В результате у вас будет локальная копия (Local Repository) удалённого репозитория (Remote Repository), как на схеме выше.
git clone https://github.com/<your_user_name>/<repo_name>
Важно понимать, что когда вы работаете над проектом все изменения по-прежнему хранятся только в рабочем каталоге (Working Directory). Чтобы Git начал отслеживать состояние файлов необходимо добавить их в индекс (Staging).Команда добавляет указанный файл в индекс:
git add <file-name>
Можно сразу добавить все файлы в индекс:
git add .
Можно проверить, что файлы действительно добавлены в индекс:
git status
Но все изменения, которые мы сделали по-прежнему, хранятся только в рабочем каталоге. Чтобы сохранить изменения в Git, нужно их зафиксировать, создав коммит.Старайтесь снабжать коммиты информативными комментариями, это поможет вам быстро находить необходимые коммиты.
git commit -m "<comment>"
Посмотреть содержимое последнего коммита
git show HEAD
HEAD - это hash последнего коммита.Чтобы отобразить последние изменения в рабочем каталоге, которые ещё не включены в коммит, выполните команду:
git diff
Вы также можете посмотреть историю коммитов в данной ветке.
git log
Вывод команды git log содержит хэш коммитов. Вы можете использовать хэш коммитов вместе с командами git show и git diff, чтобы получить информацию о любом коммите, а также сравнить два коммита между собой.Утилита git достаточно информативна, но рекомендую попробовать утилиту tig, работать с ней ещё удобнее.Теперь наш локальный репозиторий содержит информацию об изменениях, осталось обновить информацию в удалённом репозитории. Сделать это не сложно:
git push
Ваши коллеги, работающие над проектом, точно так же могут сохранять изменения в удалённый репозиторий. Вы всегда можете загрузить последние изменения из удаленного репозитория, чтобы работать с последней версией файлов:
git pull
Если вы регулярно используете Git в своей работе, то, скорее всего, описанные команды вам знакомы и вы пользуетесь ими регулярно. Но как быть, если нужно откатить состояние на определённый коммит? С этим порой возникают проблемы. Хотя ничего сложного в этом нет, сейчас разберёмся.Предположим, возникла ситуация, когда в ходе работы над проектом вы поняли, что последние коммиты не нужны, например, была допущена ошибка в первом из них. Мы можем указать, на какой коммит нужно откатиться, и все коммиты, созданные после него будут удалены. Для примера откатимся на 2 коммита назад:
git reset HEAD~2
Также можно откатится на определённый коммит, указав его хэш:
git reset <commit_hash>
Учтите, что будут удалены только коммиты, содержимое файлов в рабочем каталоге при этом не изменится. Чтобы удалить эти файлы, выполните команду:
git checkout .
Можно также откатить изменения в определенном файле:
git checkout <file_name>
Но так как файлы будут удалены безвозвратно, лучше предварительно выполнить команду git status, чтобы убедиться, что эти файлы больше не нужны.Обратите внимание, что у команды git reset есть три режима работы:
  • soft - HEAD будет указывать на коммит, который вы указали в команде. При этом индекс не меняется.
  • mixed (default) - HEAD также будет указывать на коммит, который вы указали в команде. Но изменения, связанные с удалёнными коммитами, будут удалены из индекса. Если выполнить команду git commit, то ничего не произойдёт.
  • hard - повторят эффект mixed, но также изменит файлы в вашем рабочем каталоге.
Таким образом, вы можете использовать флаг --hard вместо команды git checkout.Внести указанные изменения вы можете, если изменения ещё не отправлены в удалённый репозиторий.Так же есть возможность отредактировать последний коммит не удаляя его. Например, вы сделали коммит преждевременно. В этом случае его можно исправить.После того, как вы внесёте дополнительные изменения в рабочий каталог, добавьте их в раздел проиндексированных файлов с помощью команды git add, потом выполните команду:
git commit --amend
При этом Git откроет редактор, где вы сможете изменить комментарий этого коммита. Все зафиксированные изменения будут добавлены в отредактированный коммит.Если изменения уже отправлены в удалённый репозиторий, можно создать новый коммит, который будет содержать обратные изменения. Таким образом, можно откатить несколько коммитов.
git revert <commit_hash>
Команду git revert можно также использовать с HEAD, если нам нужно отменить последний коммит.Обратите внимание на ещё одну команду git restore, которая помогает отменить незафиксированные локальные изменения. Эту команду можно использовать для отмены действий команды git add, чтобы убрать из индекса файлы, которые вы добавили ранее.
git restore --staged <file>
Также эту команду можно использовать для отмены локальных изменений в файле, тем самым восстанавливая его последнее зафиксированное состояние:
git restore <file>
Вы также можете восстановить состояние файла на определённый коммит.
Подписывайтесь на наш телеграм-канал Mops DevOps, чтобы не пропустить лучшие статьи, видео и митапы!

===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_programmirovanie (Программирование), #_git, #_github, #_git, #_gitlab, #_github, #_development, #_developer, #_developing, #_devops, #_devtools, #_developer_tools, #_programmirovanie (программирование), #_programmirovanie (
Программирование
)
, #_git, #_github
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 09:05
Часовой пояс: UTC + 5