Расширенное руководство по Git
Развертывание проекта через удаленный репозиторий позволяет гибко управлять каждым его элементом. Исправления ошибок, обновления функций, удаление файлов, совместная работа, участие в программах с открытым исходным кодом, развертывание кода и многое другое теперь у вас под рукой благодаря глубокому знанию Git.
Итак, вы использовали Git, но хотите узнать больше? Вот еще несколько дополнительных советов по Git, которые упростят управление версиями вашего проекта.
Git Branch
Ветка Git не позволяет вам перейти непосредственно к главной ветке. Это полезно, если вы управляете проектом с командой разработчиков. Вы можете создать столько веток Git, сколько захотите, а затем объединить их в основную ветку позже.
Создать ветку Git
Чтобы создать ветку Git, используйте:
git branch branch_name
Переключиться на ветку Git
Используйте checkout, чтобы переключиться на ветку Git:
git checkout branch_name
После переключения на ветку вы можете внести изменения с помощью git add –all . Затем зафиксируйте их, используя команду git commit -m "имя фиксации" .
Сравните ветку с мастером
Используйте команду git diff :
git diff master..branch_name
Чтобы сравнить определенные файлы:
git diff master..testb -- main.html
Сравнение двух веток аналогично тому, как вы сравниваете ветку с главной:
git diff branch1..branch2
Чтобы увидеть различия в конкретном файле между двумя ветвями:
git diff branch1..branch2 -- main.html
Отправка изменений в удаленную ветку
Возможно, вы захотите, чтобы другой разработчик посмотрел на изменения, которые вы внесли в файл в своей локальной ветке, прежде чем опубликовать их. Хорошая практика – перенести вашу локальную ветку Git на удаленную реплику, чтобы они могли посмотреть.
Предположим, что вы ранее создали локальную ветку с именем changes . Вы можете переключиться на эту локальную ветвь, настроить все файлы, которые хотите, а затем подготовить и зафиксировать их в этой ветке.
Затем вы можете отправить эти изменения в удаленную версию ветки:
git push origin changes
Слияние удаленного филиала с мастером с помощью запроса на включение
Итак, другой программист проверил изменения в удаленной ветке ( изменения ). Но вы хотите объединить его с основной веткой и отправить вживую.
Помните, что ваша удаленная ветка наследует имя вашей локальной ветки Git ( изменяется ). Вот как объединить изменения:
Переключитесь на главную ветку:
git checkout master
Потяните за начало или HEAD ветки ( изменений ), чтобы объединить ее с основной веткой:
git pull origin changes
Отправьте это слияние в основную ветку:
git push origin master
Вместо этого используйте Git Merge
Чтобы объединить ветку с мастером с помощью команды слияния :
Перенести в основную ветку:
git checkout master
Сливаем с веткой ( изменения ):
git merge changes
Затем отправьте слияние в основную ветку:
git push origin master
Убедитесь, что вы заменили изменения названием вашей ветки.
После успешного слияния вы можете удалить ветку локально и удаленно, если она вам больше не нужна:
Git Rebase
Если у вас есть несколько веток с устаревшими коммитами, вы можете переустановить или перефокусировать head / refs этих веток, чтобы унаследовать head / refs обновленного.
Таким образом, ребазинг полезен, когда вам нужно обновить некоторые ветки на основе текущей.
Однако изменение базы не должно происходить часто, особенно если вы работаете в команде, поскольку это может нарушить весь рабочий процесс. Но если вы работаете в одиночку и знакомы со своим рабочим процессом и ветвями, перебазирование не должно нанести ущерб, если вы знаете, где и как его использовать.
Например, предположим, что у вас есть две ветки; branch1 и branch2. Итак, вы какое-то время не вносили никаких изменений в branch1. Но вы постоянно фиксируете изменения в branch2, в том числе и в последнее время.
Итак, вы решили нести branch1 вместе с потоком. Таким образом, переназначение branch1 на branch2 означает, что вы говорите branch1 игнорировать свои предыдущие коммиты и унаследовать недавнюю фиксацию, сделанную в branch2.
Вот как это сделать:
Перейдите в заброшенную ветку (ветка1):
git checkout branch1
Затем переустановите branch1 на обновленную ветку2:
git rebase branch2
Git Squash
Git squash позволяет объединить несколько коммитов в один. Это помогает, если вы запускаете git commit несколько раз за одно обновление. Практический пример – это когда каждое исправление ошибки или рефакторинг кода для одной функции имеет отдельную фиксацию.
Но вы, возможно, не захотите подталкивать фиксацию HEAD вместе с сопутствующими, поскольку все они имеют одну и ту же цель. Рекомендуемый подход – объединить их воедино, чтобы избежать путаницы при отслеживании коммитов.
Лучший способ сквошить коммиты – использовать интерактивный режим перебазирования. Взгляните на приведенный ниже пример, чтобы лучше понять это.
В этом примере предположим, что у вас есть пять исправлений ошибок. И для каждого из них есть коммит. Вот как можно объединить эти пять коммитов в один:
Запустите git reflog, чтобы просмотреть хэш-код ваших коммитов:
git reflog
Вот результат в этом случае:
Теперь ваша цель – избавиться от последних пяти коммитов, начиная с первого и заканчивая пятым .
Для этого скопируйте хэш-код фиксации чуть ниже первого исправления ( 0a83962 ). Затем нажмите Q, чтобы выйти из рефлога .
Теперь запустите git rebase –interactive для этого хеша.
git rebase --interactive 0a83962
Затем Git открывает интерактивный файл перебазирования, который выглядит следующим образом:
Чтобы сжать коммиты, за исключением первого исправления , замените pick на s для каждого из остальных коммитов:
Сохраните и закройте этот файл.
Затем открывается другой файл, в котором вы можете переименовать сжатую фиксацию:
Очистите их и введите предпочтительное имя для сжатого коммита:
Сохраните этот файл. Затем закройте его, и вы должны получить сообщение об успешном завершении в вашем терминале.
Примечание . Интерактивный файл может открываться в терминале. Но если вы работаете в Windows, вы можете заставить свой терминал глобально открывать файлы в вашем любимом текстовом редакторе, чтобы упростить сжатие.
Для этого откройте командную строку и запустите:
git config --global core.editor "'path to choice text editor' -n -w"
Git Fork против Git Clone
Разветвление и клонирование – это два разных термина в Git. Вы не можете форкнуть свой репозиторий, поскольку он уже есть у вас. Однако вы можете форкнуть репозиторий других людей и затем клонировать его.
Форк репозитория означает, что вы берете копию чьего-то репозитория и делаете ее своей. Как только вы получите копию этого репозитория, вы можете клонировать ее, как любой из ваших репозиториев git для локальных изменений.
Вот как клонировать удаленный репозиторий на GitHub и инициировать загрузку в локальный каталог:
git clone https://github.com/username/repository_name.git/
Восстановить файл до состояния по умолчанию
Если вы хотите удалить изменения в файле после последней фиксации, вы можете использовать команду git restore :
git restore filename
Изменить фиксацию
Вы можете вернуться к предыдущей фиксации, если забудете внести изменения в некоторые файлы при их постановке.
Внесите изменения в забытый файл. Затем используйте git corrective, чтобы просмотреть фиксацию:
git add file_forgotten
git commit --amend
Файлы Unstage
Вы можете удалить определенные файлы, которые вы подготовили для фиксации, используя команду git rm :
git rm --cached filename
Также можно удалить сразу несколько файлов:
git rm --cached file1 file2 file3 file4
Не забудьте добавить соответствующее расширение к любому файлу, который вы исключаете. Например, обычный текстовый файл должен называться filename.txt .
Git Reset
Использование git reset полезно, если вы хотите сразу удалить все файлы, которые вы подготовили для фиксации:
git reset
Однако Git reset HEAD указывает HEAD ветки на конкретную фиксацию в вашем рабочем дереве. Например, если вы еще не отправили текущую фиксацию, вы можете вернуться к недавно отправленной фиксации:
git reset --soft HEAD~1
Замените –soft на –hard, если вы уже нажали текущую фиксацию:
git reset --hard HEAD~1
Git Revert
В отличие от команды сброса , git revert поддерживает целостность вашей истории коммитов. Это удобно, если вы хотите изменить фиксацию из-за ошибок или ошибок.
Он не оставляет целевую фиксацию и не создает новую. Вместо этого он возвращается к недавним изменениям, которые вы сделали, без удаления или переименования такой фиксации. Это отличный способ сохранить ваши коммиты чище, к тому же это безопаснее, чем постоянный сброс.
Чтобы вернуться к фиксации:
git revert HEAD~1
Где HEAD ~ 1 указывает на конкретную фиксацию в вашем рабочем дереве.
Удалить отслеживаемый файл или каталог
Вы можете использовать git rm -f для удаления любых отслеживаемых файлов в вашем рабочем дереве. Обратите внимание, однако, что Git не может удалить неотслеживаемые файлы, так как он не кэширует их.
Чтобы удалить подготовленный файл:
git rm -f filename
Чтобы удалить промежуточную папку:
git rm -r -f foldername
Git Logging
Чтобы просмотреть журналы и историю коммитов в Git:
git log
Чтобы регистрировать действия в определенной ветке:
git log branch_name
Иногда вам может потребоваться вернуться к отмененной фиксации. Итак, чтобы просмотреть оставленные коммиты, в том числе соответствующие:
git reflog
Чтобы просмотреть журналы ссылок для конкретной ветки:
git reflog branch_name
Управляйте версиями проекта как профессионал с помощью Git
Благодаря тому, что Git предлагает множество преимуществ, вы можете управлять выпусками проекта удаленно, не взламывая файлы и папки локально в своей основной ветке. Кроме того, он позволяет легко запускать проекты в команде.
Как вы видели, у Git есть много возможностей, которые вы можете изучить. Но будьте осторожны, чтобы использовать эти функции целенаправленно. В противном случае вы можете что-то сломать. Тем не менее, вы все равно можете запустить демонстрационный удаленный репозиторий и поэкспериментировать с этими функциями.