Начиная

Памятка по Git для специалистов по данным

Git - это бесплатная система контроля версий с открытым исходным кодом. Большинство программистов и специалистов по обработке данных ежедневно взаимодействуют с git. Так что же такое контроль версий? Контроль версий - это способ, которым мы, как программисты, отслеживаем изменения нашего кода, и способ сотрудничества с другими программистами. Это позволяет нам оглядываться на все изменения, которые мы внесли с течением времени, что помогает нам увидеть, когда и что мы сделали, а также при необходимости вернуться к предыдущей версии кода. Возможно, вы слышали о Github раньше и можете задаться вопросом, в чем разница между Git и Github. Важно отметить, что Git и Github - это не одно и то же. Github - это облачная служба хостинга, которая размещает и управляет репозиториями Git, что расширяет базовые функции Git. Помимо Github, существует множество других сервисов, таких как Bitbucket, GitLab, Codebase, Launchpad и т. Д. В этой статье я поделюсь некоторыми общими командами Git, а также сравнениями и примерами их использования.

Базовый обзор работы Git:

  1. Создайте «репозиторий» (проект) с помощью инструмента хостинга git (например, Github)
git init

Убедитесь, что вы находитесь в корневой папке вашего проекта, когда набираете git init, иначе git будет отслеживать все файлы на вашем компьютере и все замедлять. Если вы случайно наберете git init не в том месте, вы можете отменить его, набрав rm -rf .git.

2. Добавьте удаленный репозиторий / Скопируйте (или клонируйте) репозиторий на локальный компьютер.

//add the remote repository
▶️ git remote add origin <HTTPS/SSH>
// clone the repository
▶️ git clone <HTTPS/SSH>

3. Создайте «ветку» (необязательно, но рекомендуется)

//create a new branch and switch to it at the same time
▶️ git checkout -b <branch-name>
▶️ git switch -c <branch-name>
//simply switch to an existing branch
▶️ git checkout <branch-name>
▶️ git switch <branch-name>

git switch - это не новая функция, а дополнительная команда к перегруженной команде git checkout. git checkout можно использовать для переключения ветвей и восстановления файлов рабочего дерева, и это может сбивать с толку. Чтобы разделить функции, сообщество GIT представило эту команду git switch.

4. Чтобы ваша функциональная ветка всегда была в актуальном состоянии с последними изменениями в основной ветке, используйте rebase.

▶️ git pull
▶️ git pull --rebase origin master

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

Хотя git pull и git rebase тесно связаны, они не взаимозаменяемы. git pull извлекает последние изменения текущей ветки с удаленного компьютера и применяет эти изменения к вашей локальной копии ветки. Обычно это делается с помощью git merge, т.е. локальные изменения объединяются с удаленными. Таким образом, git pull одновременно похож на git fetch + git merge.

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

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

//Add one file
▶️ git add <file-name>
//Add all the new/modified/deleted files to the staging area
▶️ git add -A (note: -A is shorthand for --all)
//Stages files in the current directory and not any subdirectories, whereas git add -A will stage files in subdirectories as well.
▶️ git add .
//Stage all new and modified files. The previous commands will also remove a file from your repository if it no longer exists in the project. 
▶️ git add --ignore-removal
//Stage all modified and deleted files
▶️ git add -u (note: -u is shorthand for --update)

5. «Зафиксируйте» (сохраните) изменения.

git commit -m “message about the changes you've made”

6. «Отправьте» изменения в ветку.

git push origin <branch-name>

Git set-upstream позволяет вам установить удаленную ветку по умолчанию для вашей текущей локальной ветки. Вы можете установить восходящий поток, добавив -u, git push -u origin <branch-name>. Эта команда установит <branch-name>branch в качестве ветки по умолчанию, что позволяет вам отправлять изменения без указания ветки, в которую вы нажимаете. После настройки восходящего потока в следующий раз, когда вы отправите какие-то изменения на удаленный сервер, вы можете просто ввести git push.

8. Откройте «запрос на перенос» (он же «PR») и запросите объединение изменений в основную ветку.

Запрос на вытягивание - это функция, которая упрощает совместную работу разработчиков. После того, как разработчик создал запрос на перенос, остальные члены команды могут просмотреть код, а затем объединить новые изменения в основную ветку.

9. «Объедините» свою ветку с основной веткой.

Полезные команды Git

  1. git status - показать, какие файлы находятся в постановке, без постановки и без отслеживания.
  2. git log - отображать всю историю коммитов. Здесь следует отметить, что выделенное желтым цветом число - это идентификатор фиксации. Идентификатор фиксации - это sha1-хэш всех данных в фиксации. Очень редко два коммита имеют одинаковый идентификатор фиксации, но это возможно.

3. git diff - сравнение изменений. git diff можно использовать для сравнения коммитов, веток, файлов и т. Д. Вы можете скопировать первые несколько символов (›4) из идентификатора фиксации, и Git сможет выяснить, о какой фиксации вы имеете в виду. Используя изображение выше, мы можем использовать 9b0867 и 51a7a.

//Show difference between working directory and last commit.
▶️ git diff HEAD
//Show difference between staged changes and last commit
▶️ git diff --cached
//Show difference between 2 commits
//To see what new changes I’ve made after the first 51a7a commit: 
▶️ git diff 51a7a 9b0867

4. git branch - перечислить все ветки в вашем репо. Не забудьте проверить это, прежде чем вводить код. Я уверен, что вы не захотите случайно отправить свой код в основную ветку или другие ветки.

5. git branch -m <new-branch-name> - переименовать ветку

//Checkout to the branch you need to rename
▶️ git checkout <old-branch-name>
//Rename branch name locally
▶️ git branch -m <new-branch-name>
//Delete old branch from remote
▶️ git push origin :<old-name> <new-branch-name>
//Reset the upstream (optional) branch for the new branch name
▶️ git push origin -u (optional) <new-name>

6. git revert - создайте новую фиксацию, которая отменяет все изменения, сделанные в ‹commit›, затем примените ее к текущей ветке. Это должно быть сделано на «уровне фиксации».

7. git reset— Это можно сделать на уровне «фиксации» или «файла». На уровне фиксации git reset discard выполняет фиксацию в частной ветке или отбрасывает незафиксированные изменения. На уровне файла git reset может удалить файл из промежуточного файла.

//Reset staging area to match most recent commit, but leave the working directory unchanged.
▶️ git reset
//Move the current branch tip backward to <commit>, reset the staging area to match, but leave the working directory alone.
▶️ git reset <commit>
//Same as previous, but resets both the staging area & working directory to match. Deletes uncommitted changes, and all commits after <commit>. 
▶️ git reset --hard <commit>
//Reset staging area and working directory to match most recent commit and overwrites all changes in the working directory. 
▶️ git reset --hard

8. git stash - принимает ваши незафиксированные изменения (как поэтапные, так и неустановленные), сохраняет их для дальнейшего использования, а затем отменяет их из вашей рабочей копии. По умолчанию Git не сохраняет изменения, внесенные в неотслеживаемые или игнорируемые файлы. Это означает, что git не будет хранить неустановленные файлы (то есть не запущенные git add) и файлы, которые были проигнорированы.

//Stash your work: once you've stashed your work, you're free to make changes, create new commits, switch branches, and perform any other Git operations; then come back and re-apply your stash when you're ready.
▶️ git stash
// re-apply stashed changes
▶️ git stash pop
// list stack-order of stashed file changes
▶️ git stash list
//discard the changes from top of stash stack
▶️ git stash drop

9. git fetch <remote> <branch>— извлекает конкретную ‹ветку› из удаленного репозитория. Отключите ‹branch›, чтобы получить все удаленные ссылки.

10. git rm <file> - удалить файл. Удаление файла с помощью этой git rmкоманды не означает, что файл был удален из истории. Файл будет жить в истории репозитория до тех пор, пока файл не будет полностью удален.

Резюме

Теперь, когда вы понимаете основные команды Git, пора применить их и начать создавать свое портфолио в области науки о данных с помощью Github!

Ресурсы:

  1. Https://www.youtube.com/watch?v=RGOj5yH7evk
  2. Https://git-scm.com/
  3. Https://www.atlassian.com/git/tutorials
  4. Https://learngitbranching.js.org/
  5. Https://bluecast.tech/blog/git-stash/
  6. Https://www.atlassian.com/git/tutorials/cherry-pick

Если вы найдете это полезным, подпишитесь на меня и просмотрите другие мои блоги. Следите за новостями! ❤