Шпаргалка по Git
Вступление
Команды разработчиков и специалистов по сопровождению программного обеспечения с открытым исходным кодом обычно управляют своими проектами через Git, распределенную систему управления версиями, поддерживающую совместную работу.
Это руководство в стиле шпаргалки содержит краткий справочник по командам, которые полезны для работы и совместной работы в репозитории Git.
Как использовать это руководство:
- Это руководство представлено в формате шпаргалки с автономными фрагментами командной строки.
- Перейдите к любому разделу, имеющему отношение к задаче, которую вы пытаетесь выполнить.
- Когда вы видите
highlighted text
в этом руководстве, имейте в виду, что этот текст должен относиться к коммитам и файлам в вашем собственном репозитории.
Настройка и инициализация
Проверьте свою версию Git с помощью следующей команды, которая также подтвердит, что Git установлен:
git --version
Git позволяет настроить ряд параметров, которые будут применяться ко всем репозиториям на вашем локальном компьютере. Например, настройте имя пользователя, которое Git будет использовать для подтверждения любых изменений, внесенных вами в локальный репозиторий:
git config --global user.name “firstname lastname”
Настройте адрес электронной почты, который будет связан с каждым маркером истории:
Также настройте предпочтительный текстовый редактор:
git config --global core.editor “nano”
Вы можете инициализировать текущий рабочий каталог как репозиторий Git с помощью init
:
git init
Чтобы скопировать существующий репозиторий Git, размещенный удаленно, вы будете использовать git clone
URL-адрес репозитория или местоположение сервера (в последнем случае вы будете использовать ssh
):
git clone www.github.com/username/repo-name
Покажите удаленный репозиторий вашего текущего каталога Git:
git remote
Для более подробного вывода используйте -v
флаг:
git remote -v
Добавьте восходящий поток Git, который может быть URL-адресом или может быть размещен на сервере (в последнем случае подключитесь с помощью ssh
):
git remote add upstream www.github.com/username/repo-name
Постановка (staging)
Когда вы изменили файл и пометили его для следующего коммита, он считается промежуточным файлом.
Проверьте состояние вашего репозитория Git, включая добавленные файлы, которые не были помещены в промежуточные файлы, и файлы, которые были помещены в промежуточные файлы:
git status
Чтобы подготовить измененные файлы, используйте add
команду, которую вы можете запускать несколько раз перед фиксацией. Если вы вносите последующие изменения, которые хотите включить в следующую фиксацию, вы должны запустить ее add
снова.
Вы можете указать конкретный файл с помощью add
:
git add my_script.py
С помощью .
вы можете добавить все файлы в текущий каталог, включая файлы, начинающиеся с .
:
git add .
Если вы хотите добавить все файлы в текущем каталоге, а также файлы в подкаталогах, вы можете использовать флаг -all
или :-A
git add -A
Вы можете удалить файл из подготовки, сохранив изменения в вашем рабочем каталоге с помощью reset
:
git reset my_script.py
Совершение (commiting)
После того, как вы подготовили свои обновления, вы готовы их зафиксировать, что запишет изменения, внесенные вами в репозиторий.
Чтобы зафиксировать промежуточные файлы, вы запустите commit
команду со своим осмысленным сообщением о коммите, чтобы вы могли отслеживать коммиты:
git commit -m "Commit message"
Вы можете сжать промежуточную подготовку всех отслеживаемых файлов, зафиксировав их за один шаг:
git commit -am "Commit message"
Если вам нужно изменить сообщение коммита, вы можете сделать это с помощью --amend
флага:
git commit --amend -m "New commit message"
Ветки (branches)
Ветка в Git — это подвижный указатель на один из коммитов в репозитории, он позволяет изолировать работу и управлять разработкой фич и интеграциями. Вы можете узнать больше о ветках, прочитав документацию Git .
Перечислите все текущие ветки с помощью 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
Если вы не объединили ветку с основной, но уверены, что хотите ее удалить, вы можете принудительно удалить ветку:
git branch -D branch-name
Сотрудничайте и обновляйте
Чтобы загрузить изменения из другого репозитория, например из удаленного восходящего потока, вы будете использовать fetch
:
git fetch upstream
Объедините извлеченные коммиты. Обратите внимание, что некоторые репозитории могут использовать master
вместо main
:
git merge upstream/main
Отправьте или передайте коммиты вашей локальной ветки в ветку удаленного репозитория:
git push origin main
Извлеките и объедините любые коммиты из удаленной ветки отслеживания:
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
Показ изменений (show changes)
Команда git diff
показывает изменения между фиксациями, ветвями и т. д. Более подробно об этом можно прочитать в документации Git .
Сравните измененные файлы, которые находятся в тестовой области:
git diff --staged
Показать разницу того, что есть, a-branch
но не есть b-branch
:
git diff a-branch..b-branch
Покажите разницу между двумя конкретными коммитами:
git diff 61ce3e6..e221d9c
Отслеживайте изменения пути, удаляя файл из вашего проекта и подготавливая это удаление к фиксации:
git rm file
Или измените существующий путь к файлу, а затем выполните перемещение:
git mv existing-path new-path
Проверьте журнал фиксации, чтобы увидеть, были ли перемещены какие-либо пути:
git log --stat -M
Тайник (stashing)
Иногда вы обнаружите, что внесли изменения в какой-то код, но прежде чем вы закончите, вы должны начать работать над чем-то другим. Вы не совсем готовы зафиксировать изменения, которые вы сделали до сих пор, но вы не хотите потерять свою работу. Команда 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
шаблонов GitHub .
Перебазирование
Rebase позволяет нам перемещать ветки, изменяя фиксацию, на которой они основаны. С помощью ребазинга вы можете раздавить или перефразировать коммиты.
Вы можете начать перебазирование, вызвав количество сделанных вами коммитов, которые вы хотите перебазировать ( 5
в случае ниже):
git rebase -i HEAD~5
В качестве альтернативы вы можете перебазировать на основе определенной строки коммита или хэша:
git rebase -i 074a4e5
После того, как вы сжали или переформулировали коммиты, вы можете выполнить перебазирование вашей ветки поверх последней версии исходного кода проекта. Обратите внимание, что некоторые репозитории могут использовать master
вместо main
:
git rebase upstream/main
Возврат и сброс
Вы можете отменить изменения, внесенные вами в данную фиксацию, с помощью revert
. Для этого ваше рабочее дерево должно быть чистым:
git revert 1fc6665
Иногда, в том числе после ребейза, нужно сбросить рабочее дерево. Вы можете выполнить сброс до определенного коммита и удалить все изменения с помощью следующей команды:
git reset --hard 1fc6665
Чтобы принудительно отправить последний известный неконфликтующий коммит в исходный репозиторий, вам нужно использовать --force
:
Предупреждение : принудительное перемещение в основную (иногда master
) ветку часто не одобряется, если для этого нет действительно важной причины. Используйте экономно при работе с собственными репозиториями и старайтесь избегать этого при совместной работе.
git push --force origin main
Чтобы удалить локальные неотслеживаемые файлы и подкаталоги из каталога Git для чистой рабочей ветки, вы можете использовать git clean
:
git clean -f -d
Если вам нужно изменить свой локальный репозиторий, чтобы он выглядел как текущая основная ветка основной ветки (то есть слишком много конфликтов), вы можете выполнить полный сброс:
Примечание . При выполнении этой команды ваш локальный репозиторий будет выглядеть точно так же, как вышестоящий. Любые сделанные вами коммиты, которые не были переданы в апстрим , будут уничтожены .
git reset --hard upstream/main
Вывод
В этом руководстве рассматриваются некоторые из наиболее распространенных команд Git, которые вы можете использовать при управлении репозиториями и совместной работе над программным обеспечением.
Существует множество других команд и вариантов, которые могут оказаться полезными при работе с Git. Чтобы узнать больше обо всех доступных параметрах, вы можете запустить следующее, чтобы получить полезную информацию:
git --help
Вы также можете прочитать больше о Git и посмотреть документацию по Git на официальном сайте Git