Как использовать Git: справочное руководство

Git шпаргалка

Вступление

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

Это руководство по стилю шпаргалки предоставляет краткий справочник по командам, которые полезны для работы и совместной работы в репозитории Git. Чтобы установить и настроить Git, обязательно прочитайте «https://www.digitalocean.com/community/tutorials/how-to-contribute-to-open-source-getting-started-with-git[Как внести свой вклад в Open Источник: Начало работы с Git. »

Как пользоваться этим руководством:

  • Это руководство в формате шпаргалки с отдельными фрагментами командной строки.

  • Перейдите к любому разделу, который имеет отношение к задаче, которую вы пытаетесь выполнить.

  • Когда вы видитеhighlighted text в командах этого руководства, имейте в виду, что этот текст должен относиться к коммитам и файлам в репозиторииyour own.

Настройка и инициализация

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

git --version

Вы можете инициализировать текущий рабочий каталог как репозиторий Git с помощьюinit.

git init

Чтобы скопировать существующий репозиторий Git, размещенный удаленно, вы должны использоватьgit clone с URL-адресом репо или местоположением сервера (в последнем случае вы будете использоватьssh).

git clone https://www.github.com/username/repo-name

Показать ваш текущий каталог Git удаленного хранилища.

git remote

Для более подробного вывода используйте флаг-v.

git remote -v

Добавьте восходящий поток Git, который может быть URL-адресом или может быть размещен на сервере (в последнем случае подключитесь с помощьюssh).

git remote add upstream https://www.github.com/username/repo-name

инсценировка

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

Проверьте состояние вашего Git-репозитория, включая добавленные файлы, которые не находятся в стадии подготовки, и файлы, которые находятся в стадии подготовки.

git status

Чтобы обработать измененные файлы, используйте командуadd, которую можно запускать несколько раз перед фиксацией. Если вы вносите последующие изменения, которые хотите включить в следующую фиксацию, вы должны снова запуститьadd.

Вы можете указать конкретный файл с помощьюadd.

git add my_script.py

С помощью. вы можете добавить все файлы в текущий каталог, включая файлы, начинающиеся с..

git add .

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

git reset my_script.py

совершение

После того, как вы подготовили свои обновления, вы готовы их зафиксировать, что запишет изменения, внесенные вами в репозиторий.

Чтобы зафиксировать поэтапные файлы, вы запустите командуcommit с осмысленным сообщением о фиксации, чтобы вы могли отслеживать фиксации.

git commit -m "Commit message"

Вы можете объединить все отслеживаемые файлы с фиксацией за один шаг.

git commit -am "Commit message"

Если вам нужно изменить сообщение о фиксации, вы можете сделать это с помощью флага--amend.

git commit --amend -m "New commit message"

ветви

Ветвь в Git - это подвижный указатель на один из коммитов в репозитории, который позволяет вам изолировать работу и управлять разработкой и интеграцией функций. Вы можете узнать больше о ветвях, прочитавGit documentation.

Вывести список всех текущих ветвей с помощью командыbranch. Звездочка (*) появится рядом с вашей текущей активной веткой.

git branch

Создать новую ветку. Вы останетесь в текущей активной ветке, пока не переключитесь на новую.

git branch new-branch

Переключитесь на любую существующую ветку и проверьте ее в текущем рабочем каталоге.

git checkout another-branch

Вы можете объединить создание и оформление новой ветки, используя флаг-b.

git checkout -b new-branch

Переименуйте название вашей ветви.

git branch -m current-branch-name new-branch-name

Объедините историю указанной ветви с той, в которой вы сейчас работаете.

git merge branch-name

Прервите слияние, если возникнут конфликты.

git merge --abort

Вы также можете выбрать конкретный коммит для слияния сcherry-pick со строкой, которая ссылается на конкретный коммит.

git cherry-pick f7649d0

Когда вы слили ветку и вам больше не нужна ветка, вы можете удалить ее.

git branch -d branch-name

Если вы еще не слили ветку в master, но уверены, что хотите ее удалить, вы можетеforce удалить ветку.

git branch -D branch-name

Сотрудничать и обновлять

Чтобы загрузить изменения из другого репозитория, такого как удаленный апстрим, вы должны использоватьfetch.

git fetch upstream

Слить извлеченные коммиты.

git merge upstream/master

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

git push origin master

Получайте и объединяйте любые коммиты из удаленной ветви отслеживания

git pull

инспектирование

Показать историю коммитов для текущей активной ветки.

git log

Показать коммиты, которые изменили определенный файл. Это следует за файлом независимо от переименования файла.

git log --follow my_script.py

Показать коммиты, которые находятся в одной ветви, а не в другой. Это покажет коммитыa-branch, которых нет наb-branch.

git log a-branch..b-branch

Просмотрите журналы ссылок (reflog), чтобы узнать, когда в последний раз обновлялись подсказки ветвей и другие ссылки в репозитории.

git reflog

Показать любой объект в Git через его строку коммита или хэш в более удобном для восприятия формате.

git show de754f5

Показать изменения

Командаgit diff показывает изменения между коммитами, ветвями и т. Д. Вы можете прочитать об этом более подробно черезGit documentation.

Сравните измененные файлы, которые находятся в промежуточной области.

git diff --staged

Отобразите разницу того, что находится вa-branch, но не вb-branch.

git diff a-branch..b-branch

Показать разницу между двумя конкретными коммитами.

git diff 61ce3e6..e221d9c

припрятать

Иногда вы обнаружите, что вы внесли изменения в некоторый код, но прежде чем закончить, вы должны начать работать над чем-то другим. Вы не совсем готовы принять изменения, которые вы сделали до сих пор, но вы не хотите терять свою работу. Командаgit stash позволит вам сохранить локальные изменения и вернуться к рабочему каталогу, который соответствует последней фиксацииHEAD.

Копите свою текущую работу.

git stash

Посмотри, что ты сейчас спрятал.

git stash list

Ваши тайники будут называтьсяstash@{0},stash@{1} и так далее.

Показать информацию о конкретном тайнике.

git stash show stash@{0}

Чтобы вывести файлы в текущем тайнике из тайника, сохраняя при этом тайник, используйтеapply.

git stash apply stash@{0}

Если вы хотите вытащить файлы из тайника, и он больше не нужен, используйтеpop.

git stash pop stash@{0}

Если вам больше не нужны файлы, сохраненные в определенном тайнике, вы можете использоватьdrop тайник.

git stash drop stash@{0}

Если у вас сохранено несколько тайников и больше не нужно их использовать, вы можете использоватьclear, чтобы удалить их.

git stash clear

Игнорирование файлов

Если вы хотите сохранить файлы в локальном каталоге Git, но не хотите фиксировать их в проекте, вы можете добавить эти файлы в свой файл.gitignore, чтобы они не вызывали конфликтов.

Используйте текстовый редактор, например nano, чтобы добавить файлы в файл.gitignore.

nano .gitignore

Чтобы увидеть примеры файлов.gitignore, вы можете посмотреть.gitignore template repo на GitHub.

перебазировка

Ребаз позволяет нам перемещать ветви, изменяя коммит, на котором они основаны. С перебазированием вы можете сдавить или перефразировать коммиты.

Вы можете начать перебазирование, позвонив по количеству сделанных вами коммитов, которые вы хотите перебазировать (5 в приведенном ниже случае).

git rebase -i HEAD~5

В качестве альтернативы вы можете выполнить перебазирование на основе определенной строки коммита или хэша.

git rebase -i 074a4e5

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

git rebase upstream/master

Чтобы узнать больше о перебазировании и обновлении, вы можете прочитатьHow To Rebase and Update a Pull Request, который также применим к любому типу фиксации.

Сброс

Иногда, в том числе и после ребазинга, вам нужно сбросить рабочее дерево. Вы можете выполнить сброс до определенной фиксации иdelete all changes с помощью следующей команды.

git reset --hard 1fc6665

Чтобы принудительно отправить последнюю известную неконфликтную фиксацию в исходный репозиторий, вам нужно использовать--force.

[.warning] #Warning: Принудительное нажатие на мастер часто осуждается, если для этого нет действительно важной причины. С осторожностью используйте при работе с собственными репозиториями и старайтесь избегать этого при совместной работе.
#

git push --force origin master

Чтобы удалить локальные неотслеживаемые файлы и подкаталоги из каталога Git для чистой рабочей ветки, вы можете использоватьgit clean.

git clean -f -d

Если вам нужно изменить ваш локальный репозиторий так, чтобы он выглядел как текущий ведущий основной поток (то есть слишком много конфликтов), вы можете выполнить полную перезагрузку.

[.note] #Note: Выполнение этой команды заставит ваш локальный репозиторий выглядеть точно так же, как и исходный. Любые коммиты, которые вы сделали, но не попали в восходящий потокwill be destroyed.
#

git reset --hard upstream/master

Заключение

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

Вы можете узнать больше о программном обеспечении с открытым исходным кодом и сотрудничестве в нашихIntroduction to Open Source tutorial series:

Есть еще много команд и вариаций, которые могут оказаться полезными при работе с Git. Чтобы узнать больше обо всех доступных параметрах, вы можете запустить:

git --help

Получать полезную информацию. Вы также можете узнать больше о Git и посмотреть документацию Git вofficial Git website.

Related