Нежный учебник для начинающих о том, как использовать Git

Что такое Гит?

Git — это распределенная система контроля версий. Это позволяет нескольким программистам работать над одним и тем же проектом.

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

Настройка Git

Во-первых, вы можете скачать Git с веб-сайта ниже.



Запустите Git bash после его установки. Во-первых, проверьте версию Git, которая у вас есть. Мой показан ниже.

git --version

Установить локальные переменные конфигурации

git config --global user.name "Name"
git config --global user.email "[email protected]"
git config --list

В любой момент вы можете обратиться за помощью, набрав команду --help в Git bash. Например, если вам нужна помощь по глаголу config, вы можете ввести следующее:

git config --help

Инициализировать репозиторий из существующего кода. Здесь у меня есть простая папка, в которой у меня есть скрипт Python с именем main.py и несколько других папок. Ваш явно был бы другим. Давайте проследим за этим общим проектом с помощью Git.

Для инициализации набираем команду:

git init

Вы поймете, что команда git init создала файл .git в каталоге.

Если по какой-то причине вы хотите удалить код из репозитория, вы можете ввести:

rm -rf .git

Это удалит файл .git из каталога. Конечно, пока не делайте этого. У нас еще много дел!

Прежде чем мы что-то совершим, мы можем проверить статус нашего проекта.

git status

Как видите, коммитов пока нет. Это потому, что мы еще ничего не совершили!

Теперь скажем, что файл .idea и userConfigs — это файлы/папки, в которых вы, возможно, не хотите отслеживать изменения. Вы можете использовать простой текстовый файл «gitignore» со списком всех файлов, которые вы хотите, чтобы Git игнорировал. Вы можете сделать это:

touch .gitignore

А потом пойти и отредактировать этот файл. Например, я сделал это в блокноте.

Теперь, если вы снова запустите git status, вы заметите, что .idea и userConfigs больше нет. Здорово!

Немного теории Git

В Git есть три состояния, о которых нам нужно знать.

  1. Рабочий каталог
  2. Промежуточная область — здесь мы организуем то, что мы хотим зафиксировать в репозитории.
  3. Репозиторий — это наш локальный репозиторий

Мы надеемся, что этот визуальный ряд даст вам представление о взаимосвязи между каждым этапом.

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

Добавьте файлы в промежуточную область

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

Нам нужно переместить их в плацдарм.

Скажем, мы хотим добавить main.py, которые мы можем запустить

git add main.py

Затем, если мы снова запустим git status:

Теперь вы можете видеть, что main.py теперь помещается в промежуточную область, готовую к фиксации. Кроме того, вы можете видеть, что .gitignore все еще не отслеживается.

Добавьте все файлы в тестовую область:

git add -A

Идеально! Теперь оба файла добавлены в промежуточную область.

Удаление файлов из промежуточной области

Если вы хотите удалить файлы из промежуточной области, вы можете использовать команду git reset. Например, если вы хотите удалить main.py из промежуточной области:

git reset main.py

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

git reset

Коммит из промежуточной области в репозиторий

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

Мы фиксируем, набрав:

git commit -m "type a message here"

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

Это наш первый коммит.

Теперь, когда мы запускаем git status, мы обнаруживаем, что в промежуточной области ничего нет.

Мы также можем проверить сделанные нами коммиты, просмотрев журнал.

git log

Иногда Проводник Windows не отображает папку .git. Если это так, вам нужно настроить его так, чтобы вы могли видеть скрытые файлы. Вы можете сделать это, следуя инструкциям по ссылке ниже.



До сих пор мы исследовали все три состояния Git в нашем локальном репозитории. Часто мы работаем в командах по несколько человек. Далее нам нужно знать, как скопировать удаленный репозиторий. Этому посвящен следующий раздел.

Клонирование удаленного репозитория

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

git clone <url or directory>

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

Вы собираетесь создать еще одну папку на своем диске под названием clone/.

И вы собираетесь клонировать из одного каталога в другой. В моем случае:

Это потому, что мой исходный репозиторий находился в папке с названием «образец». У вас, конечно, было бы иначе.

Теперь вы сможете увидеть клон вашего «не очень удаленного» репозитория.

Если вы введете следующую команду:

git remote -v

Это даст вам информацию о вашем локальном репозитории. Более того,

git branch -a

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

Внесение изменений

Давайте теперь внесем изменения в файл в репозитории клонов. После внесения изменений в файл вы можете запустить:

git diff

Это список всех изменений в существующих файлах, которые вы сделали.

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

git status

Теперь нам нужно добавить их в тестовую область, выполнив:

git add -A

Затем мы можем запустить что-то вроде этого для фиксации из промежуточной области:

git commit -m "newChange file added"

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

Отправка резервной копии в удаленный репозиторий

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

git pull origin master

Если все хорошо, мы получим ответ, что все уже обновлено. Теперь мы можем толкнуть.

git push origin master

Теперь вы отправили свои изменения обратно в удаленный репозиторий!

Ветвление

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

Чтобы проверить ветки, которые у вас есть в настоящее время:

git branch

Скорее всего, у вас будет только ветка master.

Чтобы добавить новую ветку, вы можете просто ввести:

git branch newBranch

Тот, что отмечен звездочкой, — это тот, над которым вы сейчас работаете.

Если вы хотите переключить ветки, вы можете увидеть глагол checkout.

git checkout newBranch

Это переключит вас на новую ветку!

Теперь вы можете продолжить и внести некоторые изменения в свои файлы. Вы можете увидеть внесенные вами изменения git status .

После внесения некоторых изменений вы можете зафиксировать свою новую ветку

git add -A
git commit -m "changes to new branch ... blah"

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

git push -u origin newBranch

Теперь, если мы запустим git branch -a, мы увидим все ветки (локальные и удаленные):

Вы можете видеть, что наша локальная новая ветка была перемещена в удаленный репозиторий.

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

Объединить ветки

Чтобы объединить ветки, вам сначала нужно объединить вашу ветку локально с вашим локальным мастером. Затем вы можете отправить это в удаленный репозиторий.

Итак, во-первых, вам нужно быть в своем локальном мастере:

git checkout master
git pull origin master

Затем вы можете объединить свою ветку с мастером:

git merge newBranch

Затем, наконец, вы можете нажать на удаленный репозиторий:

git push origin master

Удаление ветвей

После того, как мы передали наши изменения из ветки в мастер, мы можем удалить нашу локальную ветку:

git branch -d newBranch

Мы также можем удалить ветку из удаленного репозитория:

git push origin --delete newBranch

Мы можем проверить ветки, оставленные:

git branch -a

Собираем все вместе

  1. Создайте новую ветку для работы над новой функцией
git branch newFeature
git checkout newFeature

2. Работайте над кодом новой функции

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

git status
git add -A
git commit -m "New Features"

4. Отправить в удаленный репозиторий

git push -u origin newFeature

5. Как только все будет в порядке, слейте с локальным мастером

git checkout master
git pull origin master
git merge newFeature

6. Отправить в удаленный репозиторий

git push origin master

Все сделано!