Git – это система контроля версий для отслеживания изменений в файлах и координации работы над этими файлами между несколькими людьми. Ранее было описано, как установить Git, теперь пойдем дальше. Рассмотрим базовые команды Git и работу с удаленным репозиторием.
Для начала создайте новый репозиторий на GitHub. Перейдите по этой ссылке. Теперь придумайте папку, в которую Вы хотите разместить локальный Git.
$ cd Desktop/MyGit
Создадим файл и добавим его в Git
$ touch README.md
Так можно добавить все, что есть в директории
$ git add .
ИЛИ добавим конкретный файл
$ git add README.md
Пере коммитом можно посмотреть, что изменено
$ git status
Фиксация изменений распространяется на Ваш Git репозиторий
$ git commit -m "First commit"
То, что написано в кавычках – это изменения, которые прочтут остальные в Вашем репозитории
Можно отменить изменения, если Вы, например, заметили, что отправили в репозиторий код с ошибками… Удалим последний коммит:
$ git reset HEAD~1
Добавим удаленный репозиторий:
$ git remote add origin https://github.com/username/repoX
Просмотреть список удаленных репозиториев можно так:
$ git remote -v
А теперь настало время “запушить” (отправить) изменения на наш удаленный репозиторий:
$ git push -u origin master
Теперь все изменения, сделанные локально, у нас на удаленном репозитории.
Чтобы показать изменения файлов, которые еще не были выполнены:
$ git diff
Возврат к последней зафиксированной версии в Git репозитории:
$ git checkout .
ИЛИ можно указать конкретный файл
$ git checkout README.md
Просмотрим историю изменений так:
$ git log
Каждый раз, когда вы вносите изменения, которые вы хотите отразить на GitHub, используем эти команды:
$ git add .
$ git status
$ git commit -m "Second commit"
$ git push -u origin master
Это все хорошо… но как я могу скачать и работать с другими репозиториями на GitHub? Клонируем репозиторий. Перейдите в каталог, в котором Вы хотите клонировать репозиторий. Скопируйте ссылку на нужный репозиторий и введите следующее:
$ git clone ссылка_на_репозиторий
Теперь вы можете работать с файлами, которыми хотите, и фиксировать изменения локально. Если Вы хотите внести изменения в этот репозиторий, Вы либо должны быть добавлены в качестве соавтора для репозитория, либо Вы должны создать запрос на pull.
Итак, представьте, что вы и ваш друг сотрудничаете над проектом. Вы оба работаете над одними и теми же файлами проекта. Каждый раз, когда вы вносите некоторые изменения и вставляете их в мастер-репозиторий, Ваш друг должен вытащить изменения, которые Вы отправили на Git репозиторий. Чтобы убедиться, что Вы работаете над последней версией репозитория git каждый раз, когда Вы начинаете работать, выполняйте команду git pull.
Ниже приведен пример проекта, над которым мы с моим другом сотрудничаем:
Там только что был коммит на репозитории. Поэтому необходимо убедиться, что эти изменения отражены в моей локальной копии репозитория:
$ git pull origin master
Вот еще две полезные команды Git:
$ git fetch
$ git merge
Когда вы используете git pull, Git пытается автоматически выполнять всю работу за Вас. Он чувствителен к контексту, поэтому Git объединит любые вытащенные коммиты в ветку, в которой Вы сейчас работаете. git pull автоматически объединяет коммиты, не позволяя Вам сначала просмотреть их.
Когда Вы получаете их, Git собирает любые коммиты из целевой ветви, которые не существуют в Вашей текущей ветви, и сохраняет их в локальном репозитории. Однако он не объединяет их с Вашей текущей веткой. Это особенно полезно, если Вам нужно поддерживать свой репозиторий в актуальном состоянии, но Вы работаете над чем-то, что может сломаться, если Вы обновите свои файлы. Чтобы интегрировать коммиты в свою главную ветвь, используйте git merge.
Еще одна вещь:
$ touch .gitignore
Так что же это?
Этот файл сообщает Git, какие файлы (или шаблоны) он должен игнорировать. Он обычно используется, чтобы избежать фиксации временных файлов из Вашего рабочего каталога, которые не полезны для других сотрудников, таких как продукты компиляции, временные файлы IDE create и т. д.
Так что в приведенном выше примере, файлы, такие как __pycache__, .DS_Store используются системой для хранения информации для более быстрого доступа. Это не полезно для других сотрудников. Поэтому мы можем сказать Git игнорировать их, добавив их в файл .gitignore
Создадим этот файл .gitignore:
$ touch .gitignore
И добавим, что игнорировать:
/*.cmake/*.DS_Store/.user/build