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.