СправошнаяПоиск

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

Шпаргалка по 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 cloneURL-адрес репозитория или местоположение сервера (в последнем случае вы будете использовать 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