Гит И Гитхаб. Простые Рецепты

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

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

Существует несколько широко используемых систем контроля версий, и мы рассмотрим одну из самых популярных — Git и сервис Github. Git появился как инструмент контроля исходного кода для операционной системы Linux и приобрел множество поклонников в среде открытого исходного кода.

Сервис Github обеспечивает хостинг (хранение) исходных текстов как на платной, так и на бесплатной основе.

Это одна из крупнейших систем, которую любят пользователи Open Source. Основное отличие платной версии — это возможность создавать приватные репозитории (хранилища) исходных кодов, и если вам нечего скрывать, то вы можете смело использовать бесплатную версию.

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

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

Самое простое решение — сохранить все на флэшке.

Этот вариант работает хорошо, но если у вас есть подключение к Интернету (а сейчас у кого его нет), то удобно использовать системы Git/Github. В этой статье будут рассмотрены основные сценарии использования систем Git/Github при работе над проектом в среде Linux с использованием командной строки.

Все примеры были протестированы в системе Linux Ubuntu 14.04 и Git 1.9.1. Если вы используете другой дистрибутив, могут быть различия.



Создание локального репозитория

Предположим, ваш проект находится в папке /домашняя страница/пользователь/проект .

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

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

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

Для поиска таких файлов можно использовать команду находить .

В качестве примера посмотрим, как найти все файлы, сгенерированные компилятором Python и имеющие расширение .

pyc Заходим в папку проекта /домашняя страница/пользователь/проект :

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   

cd /home/user/project

И показываем список файлов с расширением .

pyc :

find .

-name *.

pyc

Эта команда выведет список всех файлов с расширением .

pyc в текущем каталоге и его подкаталогах.

Для удаления найденных файлов достаточно добавить ключ -удалить на эту команду:

find .

-name *.

pyc -delete

Настоятельно рекомендуется не торопиться и не добавлять этот ключ сразу.

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

Создадим локальный репозиторий в папке проекта:

git init

После запуска этой команды появится новая папка с именем .

git .

Он будет содержать несколько файлов и подкаталогов.

На данный момент система контроля версий еще не видит наши файлы.



Добавление файлов в локальный репозиторий

Для добавления файлов используйте команду:

git add readme

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

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

9f2422325cef705b7682418d05a538d891bad5c8

Добавленные файлы сохраняются в папке .

git/objects/xx/yyyyyyyy , при этом первые 2 цифры хеша используются для обозначения каталога, а остальная часть хеш-значения — это имя файла.

Наш добавленный файл будет находиться здесь:

.

git/objects/9f/2422325cef705b7682418d05a538d891bad5c8

Это легко увидеть с помощью команды:

ls .

git/objects

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



git cat-file -p 9f2422325cef705b7682418d05a538d891bad5c8

Чтобы добавить все файлы из текущего каталога, введите:

git add .



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

git add --all

Чтобы временные файлы не попадали в систему, их можно поместить в файл .

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

git каталог).

Например, если в файле .

gitignore добавьте следующую строку *.

pyc , затем все файлы с расширением .

pyc не будет добавлен в репозиторий.

После добавления файлов все изменения находятся в так называемом постановка (или кэшированный ) область .

Это некое временное хранилище, которое используется для накопления изменений и из которого создаются актуальные версии проекта ( совершить ).

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

git status

После выполнения команды мы увидим это в сцена наш файл находится:

new file: readme

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



new file: readme modified: readme

Чтобы добавить новые изменения, просто повторите команду.

Команда git добавить добавляет не только новые файлы, но и все изменения в файлах, которые были добавлены ранее.



git add readme

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

git rm --cached readme

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



Создание версии проекта

После того как мы добавили необходимые файлы в плацдарм мы можем создать версию проекта.

Используя команду:

git commit -m "comment"

Каждая новая версия сопровождается комментарием.

После фиксации мы можем найти внутри два новых объекта.

.

git хранилище.



.

git/objects/9f/2422325cef705b7682418d05a538d891bad5c8 .

git/objects/65/7ab4c07bd3914c7d66e4cb48fe57f5c3aa7026 .

git/objects/da/c6721c3b75fcb3c9d87b18ba4cef2e15e0a3d3

Давайте посмотрим, что внутри:

git cat-file -t 657ab4c07bd3914c7d66e4cb48fe57f5c3aa7026

Ключ показывает тип объекта.

В результате мы видим:

commit

Для второго объекта:

git cat-file -t dac6721c3b75fcb3c9d87b18ba4cef2e15e0a3d3

Результат:

tree

Для самого первого файла:

git cat-file -t 9f2422325cef705b7682418d05a538d891bad5c8

Мы видим:

blob

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

Из каждого коммита вы можете перейти по ссылкам на все измененные файлы.

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

Это можно только исправить.

Если вы хотите добавить изменения в последнюю версию, то после выполнения команды совершить , добавляем необходимые изменения и вызываем:

git commit -m "comment" --amend

Или вот так:

git commit --amend --no-edit

Ключ --no-редактировать необходимо, чтобы избежать повторного ввода комментария.

Вы можете просмотреть изменения, внесенные вами при последнем коммите:

git show

Или вот так:

git show --name-only

Ключ --только имя нужно было показывать только имена измененных файлов.

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

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

git commit -a -m "comment"

Чтобы просмотреть список всех коммитов, используйте команду:

git log

Или вот так:

git log --oneline

Ключ --одна линия необходимо для уменьшения количества информации, отображаемой на экране.

С помощью этого ключа каждый коммит отображается в одной строке.

Например:

2b82e80 update 657ab4c first

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



git show 657ab4c

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

git reset HEAD~1

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

git clean -df



Создание репозитория на Github

До сих пор мы работали с локальным репозиторием, который сохранялся в папке на компьютере.

Если мы хотим иметь возможность сохранить проект в Интернете, мы создадим репозиторий на Github. Для начала необходимо зарегистрироваться на сайте github.com под именем мойпользователь (в вашем случае это может быть любое другое имя).

После регистрации нажмите кнопку "+" и введите имя репозитория.

Выбор типа Общественный (репозиторий всегда Общественный для бесплатной версии) и нажмите Создавать .

В результате мы создали репозиторий на сайте Github. На экране мы увидим инструкцию, как подключить наш локальный репозиторий к вновь созданному.

Некоторые команды нам уже знакомы.

Добавьте удаленный репозиторий (через SSH) под именем источник (вместо источник Вы можете использовать любое другое имя).



git remote add origin [email protected]:myuser/project.git

Результат добавления мы можем просмотреть с помощью команды:

git remote -v

Если все было сделано правильно, мы увидим:

origin [email protected]:myuser/project.git (fetch) origin [email protected]:myuser/project.git (push)

Чтобы отменить регистрацию удаленного репозитория, введите:

git remote rm origin

Это может понадобиться, если вы хотите изменить SSH доступ к HTTPS .

После этого его можно добавить еще раз, например под названием github и протокол HTTPS .



git remote add github https://github.com/myuser/project.git

Следующая команда зафиксирует все изменения, внесенные в локальный репозиторий Github.

git push -u github master

Ключ используется для установления соединения между удаленным репозиторием github и твоя тема владелец .

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



git push



Перенос репозитория на другой компьютер

После создания репозитория на Github его можно скопировать на любой другой компьютер.

Для этого используйте команду:

git clone https://github.com/myuser/project.git

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

Эта папка также будет содержать локальный репозиторий (то есть папку .

git ).

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



git clone https://github.com/myuser/project.git <myfolder>



Работа с одним репозиторием с разных компьютеров

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

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

git pull

Если вы изменили локальные файлы, то команда мерзавец тянуть выдаст ошибку.

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

git fetch --all git reset --hard github/master

Вместо github подставьте имя вашего удаленного репозитория, который вы зарегистрировали с помощью команды git push -u .

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

git push

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

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

git push -f

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

Для этого отложим текущие изменения командой:

git stash

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

git stash pop



Заключение

Мы рассмотрели базовые сценарии работы с системами Git и Github. Каждая команда выше имеет значительно больше клавиш и, соответственно, возможностей.

Их постепенное изучение даст вам возможность легко защитить свои источники и сконцентрироваться непосредственно на разработке.

Теги: #git #github #git #github

Вместе с данным постом часто просматривают: