Слава Україні!

Git - 10 полезных команд

10 полезных команд git
25-го лютого 2020, 7:50
Добавление и коммит нескольких файлов

Обычно в Git мы используем команду git add *, чтобы подготовить все изменённые файлы для последующего коммита. Чтобы закоммитить эти изменения, используется команда git commit -m "commitMessage". Однако можно совместить эти флаги и выполнить обе задачи за один шаг:


git commit -am "commitMessage"

Флаги -am позволяет не только подготовить эти изменения, но и закоммитить их одной эффективной операцией.

Создание и переключение на ветку Git

Как и в предыдущем случае, есть команда, которая объединяет функциональность этих двух команд. Вместо того, чтобы использовать две отдельные команды — git branch branchName для создания ветки и git checkout branchName для переключения на неё — обе задачи можно выполнить за один шаг с помощью следующей команды:


git checkout -b branchName

Флаг -b в команде git checkout позволяет не только создать новую ветку, но и сразу же переключить вас на неё.

Удаление Git-ветки

Чтобы удалить ветку в Git, можно использовать команду git branch -d или git branch -D. Опция -d предназначена для безопасного удаления: удаление ветки произойдёт только в том случае, если было проведено слияние (merge) с текущей веткой. Опция -D предназначена для принудительного удаления, при котором ветка будет удалена независимо от того, полностью она слилась или нет. Вот команды:

Безопасное удаление (проверяет слияние):


git branch -d branchName

Принудительное удаление (не проверяет слияние):


git branch -D branchName
Переименование Git-ветки

Чтобы переименовать ветку, можно использовать команду git branch -m, за которой следует текущее имя ветки и новое желаемое имя. Например:


git branch -m oldBranch newBranch

Однако если вы хотите переименовать текущую ветку, в которой вы сейчас работаете, без явного указания текущего имени, вы можете использовать следующую команду:


git branch -m newBranch

Здесь вам не нужно указывать старое имя ветки, потому что Git предположит, что вы хотите переименовать текущую ветку.

Удаление определённого файла

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


git reset filename

Это удалит файл из области подготовки файлов, сохранив при этом изменения.

Отмена изменений в определённом файле

Если вам нужно полностью отменить изменения, внесённые в определённый файл, и вернуть его к последнему закомиченному состоянию, используйте команду:


git checkout -- filename

Эта команда гарантирует, что файл вернётся к своему предыдущему состоянию с отменой всех последних изменений. Это полезный способ начать работу над конкретным файлом заново, не затрагивая остальные изменения.

Обновление последнего коммита

Представьте, что вы только что сделали коммит, но потом поняли, что забыли включить в него одно изменение, или, возможно, вы хотите исправить комментарий к коммиту. При этом создавать новый коммит для этого небольшого изменения вы не хотите. Вместо этого вы хотите добавить его в предыдущий коммит. В таком случае можно использовать команду:


git commit --amend -m 'message'

Эта команда изменяет последний коммит. Это объединяет все новые изменения в области подготовки (добавленные с помощью git add) с новым комментарием, чтобы создать обновлённый коммит.

Следует помнить, что если вы уже отправили коммит в удалённый репозиторий, то для обновления удалённой ветки вам нужно будет принудительно отправить изменения с помощью git push --force. Потому что стандартная команда git push добавляет новый коммит в ваш удалённый репозиторий, а не изменяет последний коммит.

Хранение отложенных изменений (stashing)

Представьте, что вы работаете над двумя разными ветками, A и B. Во время внесения изменений в ветку A ваша команда просит вас исправить баг в ветке B. Когда вы пытаетесь переключиться на ветку B с помощью git checkout B, Git не дает этого сделать, выдавая ошибку.

Можно закоммитить изменения, как предлагает сообщение об ошибке. Но это скорее фиксированная точка во времени, а не постоянная работа. Для хранения отложенных изменений используем команду git stash, которая приведёт к тому, что отложенные изменения будут сохранены.

git stash временно сохраняет изменения, которые вы не готовы закоммитить, позволяя вам переключать ветки или работать над другими задачами, не делая коммита незаконченной работы.

Чтобы повторно применить записанные изменения в ветке, можно использовать git stash apply или git stash pop. Обе команды восстанавливают последние отложенные изменения. Команда stash apply просто восстанавливает изменения, а pop восстанавливает изменения и удаляет их из хранилища (stash).

Откат изменений в коммитах

Представьте, что вы работаете над Git-проектом и обнаружили, что в определённый коммит были внесены некоторые нежелательные изменения. Вам нужно отменить эти изменения, не стирая коммит из истории. Чтобы отменить этот конкретный коммит, можно использовать следующую команду:


git revert commitHash

Это безопасный и недеструктивный способ исправить ошибки или нежелательные изменения в проекте.

Допустим, у вас есть серия коммитов:

  • Коммит A
  • Коммит B (здесь внесены нежелательные изменения)
  • Коммит C
  • Коммит D

Чтобы отменить последствия коммита B, нужно выполнить команду:


git revert commitHashOfB

Git создаст новый коммит, назовём его коммит E, который отменяет изменения, внесённые коммитом B. Коммит E станет последним коммитом в вашей ветке, и проект теперь отражает состояние, в котором он находился бы, если бы коммита B не было.

Получить хэш коммита можно с помощью команды


git reflog

f699e63 HEAD@{10}: commit: Comment to commit...
3a44a45 HEAD@{11}: commit: Comment to commit...
9bfb31f HEAD@{12}: commit: Comment to commit...
ba30c98 HEAD@{13}: commit: Comment to commit...
f137028 HEAD@{14}: commit: Comment to commit...
Сброс коммитов

Предположим, вы сделали коммит в своём проекте. Однако после проверки вы понимаете, что вам нужно скорректировать или полностью отменить последний коммит. Для таких случаев Git предоставляет следующие команды:

Soft reset

git reset --soft HEAD^

Эта команда позволяет вернуться к последнему коммиту, сохранив все изменения в области подготовки. Проще говоря, с помощью этой команды можно легко отменить коммит, сохранив изменения в коде. Это удобно, когда вам нужно пересмотреть последний коммит, возможно, добавить больше изменений перед повторным коммитом.

Mixed reset

git reset --mixed HEAD^ 

Это поведение по умолчанию, когда вы используете git reset HEAD^ без указания --soft или --hard. Он сбрасывает последний коммит и удаляет изменения из области подготовки. Однако эти изменения остаются в рабочей директории. Это полезно, когда вы хотите отменить последий коммит и внести изменения с нуля, сохранив изменения в рабочей директории перед повторным коммитом.

Hard reset

git reset --hard HEAD^ 

Напоследок давайте поговорим о команде git reset --hard HEAD^. Она полностью стирает последний коммит вместе со всеми связанными с ним изменениями из вашей истории Git. Когда вы используете флаг --hard, пути назад уже не будет. Поэтому используйте его с особой осторожностью, только если хотите навсегда удалить последний коммит и все его изменения.

Важлива інформація

Міністерство оборони
України
з 24.02 по 07.02
втрати противника
орієнтовно склали:
846650 ( +1340 ) особового складу
9975 ( +10 ) танків
20755 ( +18 ) бойових бронемашин
22785 ( +32 ) артилерійських систем
1271 ( +0 ) РСЗВ
1056 ( +1 ) засоби ППО
369 ( +0 ) літаків
331 ( +0 ) гелікоптерів
36307 ( +96 ) автомобільної техніки
28 ( +0 ) кораблі / катери
3054 ( +0 ) крилаті ракети
24301 ( +116 ) БПЛА
3738 ( +1 ) спец. техніки
4 ( +0 ) установок ОТРК/ТРК
1 ( +0 ) підводні човни