Git: документация – часть 1: создание репозитория
Перевод замечательной документации от Atlassian.
Так же – есть отличный ресурс на русском тут>>>, в котором более детально рассматриваются вопросы, связанные с внутренней структурой Git.
В этой документации будут рассмотрены основные команды Git. В первой части – “Создание репозитория” – описаны утилиты, необходимые для начала работы с новым проектом под контролем Git.
Предпосылки
Установите GitHub Desktop
GitHub Desktop помогает пользователю git графически выполнять задачи, связанные с git. Вы можете легко загрузить последнюю версию установщика этого приложения для Ubuntu с github.com. Вы должны установить и настроить это приложение после загрузки, чтобы использовать его. Вы также можете проверить руководство по установке GitHub Desktop в Ubuntu, чтобы правильно узнать процесс установки.
Создайте учетную запись GitHub
Вам потребуется учетная запись GitHub, чтобы проверить команды, используемые в этом руководстве для удаленного репозитория.
Создайте локальный и удаленный репозиторий
Вам необходимо создать локальный репозиторий и удаленный репозиторий, чтобы проверить команды, используемые для клонирования.
Добавляем файлы в проект
Вот, чем мы займемся:
Но ничего сложного здесь нет!
Должно быть, у вас уже есть файлы, которые вы бы хотели разместить в новом репозитории. Отыщите их на компьютере и перетащите в новую папку репозитория на Рабочем столе.
Проверьте статус проекта.
Откройте терминал и перейдите в папку репозитория. Для проверки обновлений выполните:
Если вы перетаскивали файлы в папку проекта, то потребуется обновить состояние репозитория. Добавлять файлы в репозиторий можно по одному:
Это ваши предлагаемые изменения. Операцию можно повторить с новыми файлами либо с уже существующими, но измененными. По сути, ничего нового в сам проект вы не добавляете. Вы всего лишь загружаете новые файлы и указываете Git на эти изменения.
Процесс создания коммитов с изменениями начинается с выполнения команды:
Коммиты изменений добавляются в head (указатель), а не в удаленный репозиторий. Не забудьте заменить текст в скобках и убрать <> . После внесения изменений создается снимок состояния репозитория, для чего используется команда commit . А через –m добавляется сообщение об этом снимке.
Сохраненные изменения и называются коммитом. При создании коммита вы добавляете сообщение о том, что именно менялось и почему. Так другие люди смогут лучше понять суть изменений.
Теперь ваши изменения сохранены в указателе локальной копии проекта. Для отправки изменений на удаленный репозиторий выполните команду:
Тем самым вы отправляете изменения напрямую в репозиторий. Если вы работаете на локальном компьютере и хотите, чтобы коммиты отображались в онлайн, то необходимо своевременно отправлять эти изменения на GitHub по команде git push .
Актуальность версии можно проверить в любое время через команду git status .
Итог: у вас есть свой GitHub репозиторий, вы научились добавлять и изменять в нем файлы.
Как клонировать Git-репозиторий
Чтобы начать работать, нам нужно «клонировать» репозиторий. Клонирование означает скачивание из источника всего кода проекта, а также метаданных. Источником в нашем случае является GitHub.
Чтобы клонировать репозиторий, используйте команду git clone .
В примере я использовал URL репозитория, который только что создал, а вам нужно подставить URL вашего.
Примечание: команды, которые нужно запускать в терминале, предваряются значком $.
Позднее мы рассмотрим git clone более подробно. Пока просто знайте, что после выполнения этой команды проект будет загружен на вашу машину и размещен в отдельной папке в вашей текущей рабочей директории.
Давайте перейдем в папку проекта (при помощи команды cd ):
Мы перешли в папку проекта (это обычная папка, такая же, как все остальные). Ваш терминал может выводить рядом с именем папки слово (main) .
Как откатить коммит?
Если требуется отменить изменения в уже созданном коммите, допустим, вы что-то забыли дописать в коде, то нужно выполнить:
- Внимание! Данная операция не затронет внесённых изменений.
- Выполняем команду “git reset —soft HEAD^”.
- Отменяется последний коммит, далее мы вносим изменения в коде.
- Далее создаем новый коммит командой “git commit -m ‘add some code’ ”.
- И отправляем изменения в репозиторий командой “git push origin master”.
Если требуется откатить залитые правки до предыдущего коммита, то нужно выполнить:
- Осторожно! Эта команда безвозвратно удаляет несохраненные текущие изменения.
- Для начала нужно узнать хэш последнего коммита. Для этого выполняем команду “git show-ref —heads —hash master”.
- Далее вводим команду “git revert e882466”, где e882466 — первые 7 символов хэша текущего коммита.
- Далее нужно подтвердить откат коммита. Нужно ввести название коммита или оставить уже введенный автоматически текст Revert “add one more object” (это пример).
- Далее отправляем коммит в репозиторий командой “git push origin master” (если текущая ветка master).
Что такое коммит (git commit)
Программировать только в облаке неудобно — проще скачать себе на компьютер весь проект и писать код на своей машине. Но чтобы правки увидели остальные, их нужно отправить обратно в репозиторий. Это и есть коммит.
Коммитить можно и один файл, и сразу несколько. Система сама найдёт, что изменилось в каждом файле, и добавит эти изменения в проект. Но все эти правки внесутся в репозиторий за один раз, потому что при коммите обрабатываются сразу все добавленные в список файлы.
Например, вы изменили файл главной страницы index.html и добавили его в список файлов текущего коммита. Теперь его можно отправить на сервер, а можно ещё поправить сразу style.css и внести в этот же коммит. Системе всё равно, сколько файлов обрабатывать, поэтому как и что коммитить — решает программист.
Единственное требование к коммитам — указывать, что именно вы поменяли в проекте, человеческим языком. Хорошим тоном и правильным подходом считается писать, что именно вы изменили: «Добавил цвет и стили основной кнопки», «Убрали метод вызова старого API», «Сделали рефакторинг функции SetOutOfDate()». Это описание будут читать другие разработчики.
Коммитить можно хоть после правки каждой строчки — весь вопрос в том, насколько нужна такая детализация в проекте. Но иногда и изменения из одной строчки можно закоммитить, если оно действительно важное.
Отправка в удалённый репозиторий
Чтобы отправить свои изменения в удалённый репозиторий, нужно сделать коммит в конкретной ветке и выполнить команду:
Если такой ветки ещё не существует в удалённом репозитории, Git CLI посоветует создать её и подскажет команду.
Регистрация в Git
Чтобы воспользоваться сервисом, нужно зайти на сайт GitHub и зарегистрировать нового пользователя. Придумайте имя и пароль, а также введите email, к которому у вас есть доступ:
Теперь, когда у вас есть свой аккаунт, нужно залогиниться в самой консоли, чтобы связать их. Для этого понадобится выполнить команды в консоли, которые зададут имя пользователя и почтовый ящик.
git config —global user.name «user-name»
git config —global user.email email@example.com
Вместо user-name подставьте логин, который указывали при регистрации. В нашем случае это test-github-04, а вместо email@example.com — адрес вашей электронной почты. В нашем примере — testgithub@gmail.com.
Если вы всё сделали по инструкции, то при выполнении команды git config —list отобразится ваше имя пользователя:
Не забудьте верифицировать аккаунт: откройте первое письмо на почте от GitHub и пройдите по ссылке. Иначе вы не сможете создавать репозитории.
Клонирование репозитория с Github
Идем на другую машину (в тестовой среде был просто сменен пользователь командой su mailer, затем выполнен переход в его домашний каталог cd /home/mailer)
git clone https://github.com/exampleuser/test.git
Cloning into ‘test’…
remote: Counting objects: 10, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 10 (delta 0), reused 10 (delta 0), pack-reused 0
Unpacking objects: 100% (10/10), done.
Checking connectivity… done.
Переходим в каталог test
Редактируем файл password
git config —global user.email «testuser2017@mail.ru»
git config —global user.name «testuser2017»
git commit -m «added by another user»
git commit -m «added by another user»[master d578a72] added by another user
1 file changed, 2 insertions(+), 1 deletion(-)
Отправляем на github
Username for ‘https://github.com’: exampleuser
Password for ‘https://exampleuser@github.com’:
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 293 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/exampleuser/test.git
c2a671f..d578a72 master -> master
Проверяем, что на github появилась информация о сделанном коммите, а файл обновился
Теперь авторизуемся на сервере с реквизитами пользователя от имени которого работа велась изначально и выполняем команду git pull origin master
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/exampleuser/test
* branch master -> FETCH_HEAD
c2a671f..d578a72 master -> origin/master
Updating c2a671f..d578a72
Fast-forward
password | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Просматриваем файл password — видим, что изменения сделанные и закоммиченные другим пользователем сохранились