При разработке собственного проекта рано или поздно приходится задумываться о том, где хранить исходный код и как обеспечить работу с несколькими версиями.
Если вы работаете в компании, обычно это решают за вас и вам нужно только поддерживать принятые правила.
Существует несколько широко используемых систем контроля версий, и мы рассмотрим одну из самых популярных — 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
-
Шлифовальные Машины
19 Oct, 24 -
Как Сочетаются Дизайн И Умные Технологии
19 Oct, 24 -
Основные Понятия, Принятые В Языке Лада
19 Oct, 24 -
Вакансия
19 Oct, 24 -
Киллер-Функция
19 Oct, 24