Нежный учебник для начинающих о том, как использовать 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 есть три состояния, о которых нам нужно знать.
- Рабочий каталог
- Промежуточная область — здесь мы организуем то, что мы хотим зафиксировать в репозитории.
- Репозиторий — это наш локальный репозиторий
Мы надеемся, что этот визуальный ряд даст вам представление о взаимосвязи между каждым этапом.
До сих пор мы просто играли на этапе рабочего каталога. Далее нам нужно знать, как добавлять файлы в промежуточную область, готовые к фиксации в локальном репозитории.
Добавьте файлы в промежуточную область
Как вы можете видеть, оба файла в настоящее время просто лежат в нашем рабочем каталоге без отслеживания.
Нам нужно переместить их в плацдарм.
Скажем, мы хотим добавить 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
Собираем все вместе
- Создайте новую ветку для работы над новой функцией
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
Все сделано!