Git - самая популярная реализация распределённой системы контроля версий(версионность поддерживается и на сервере, и у каждого клиента). Самой распространнённой реализацией Git является (GitHub)[https://github.com]
Для создания репозитория используется команда git init. Для этого необходимо открыть в терминале папку с будущем репозиторием и написать git init
Для добавления файла к новому коммиту используется команда git add. Используется она следующим образом: в терминале с папкой-репозиторием пишем git add <название файла>.
Для создание новой фиксации(коммита) используется команда git commit. Для этого в терминале с папкой-репозиторием пишем git commit -m "<сообщение к коммиту>. Сообщение к коммиту писать ОБЯЗАТЕЛЬНО!!!
Для просмотра истории изменений используется команда git log. Для этого в терминале с папкой-репозиторием необходимо написать git log
Для перемещения на другую фиксацию(коммит) используется команда git checkout. Для этого необходимо, как показано в прошлом пункте, в журнале изменений найти необходимый коммит и его хеш(номер), после чего в терминале с папкой-репозиторием надо написать git checkout <хеш коммита>. После выполнения этой команды мы попадаем в состояние detached head, в котором никакие следующие коммиты сохраняться не будут. Для выхода из этого состояния необходимо написать git checkout master.
Для создание новой ветки используется команда git branch. Для этого в терминале с папкой-репозиторием необходимо написать git branch <название ветки>.
Для просмотра списка веток используется команда git branch. Для этого в терминале с папкой-репозиторием необходимо написать git branch. Выделенная зелёным со звёздочкой ветка - это ветка, в данный момент на которой мы находимся.
Для перехода на другую ветку используется команда git checkout. Для этого в терминале с папкой-репозиторием необходимо написать git checkout <название ветки>. Такая ветка должна существовать.
Слияние веток и разрешение конфликтов...
Сперва, нужно зарегистрироваться на GitHub, если это не было сделалано или подключить нужную ветку и отправить изменения локального репозитория. Перед началом работы вводим команду git init, открываем свой репозиторий и подключаемся к удаленному репозиторию командой git remote add origin https://github.com/имя_ник_пользователя/ИмяРепозитория.git, где «имя_ник_пользователя» — ник пользователя удаленного репозитория. «ИмяРепозитория» — это имя нашего уже созданного заранее репозитория на GitHub. Можно просмотреть список настроенных удалённых репозиториев командой git remote. Она выведет названия доступных удалённых репозиториев:
$ git clone https://github.com/... Cloning into 'ticgit'... remote: Reusing existing pack: 1857, done. remote: Total 1857 (delta 0), reused 0 (delta 0) Receiving objects: 100% (1857/1857), 374.35 KiB | 268.00 KiB/s, done. Resolving deltas: 100% (772/772), done. Checking connectivity... done. $ cd ticgit $ git remote origin
Чтобы просмотреть адреса для чтения и записи, привязанные к репозиторию можно вводим git remote -v:
$ git remote -v origin https://github.com/... (fetch) origin https://github.com/... (push)
Для того, чтобы добавить удалённый репозиторий и присвоить ему имя (shortname), просто выполните команду git remote add <короткое имя> :
$ git remote origin $ git remote add pb https://github.com/прол/ $ git remote -v origin https://github.com/прол (fetch) origin https://github.com/прол (push) pb https://github.com/paulboone/ (fetch) pb https://github.com/paulboone/ (push)
<короткое имя> это короткое имя которое будет ассоциировано с удаленным репозиторием.
Необходимость клонировать существующий удаленный репозиторий возникает в ситуациях, когда нужно поработать над уже существующим кодом. Для выполнения этой операции предусмотрена команда git clone, которая вводится так: git clone <ссылка на удаленный репозиторий>. После этого в директории, откуда запущена команда git clone, создается директория с именем репозитория. В созданную директорию копируется репозиторий, все его ветки и коммиты. В новосозданный локальный репозиторий добавляется удаленный репозиторий с именем origin и ссылкой, которую мы передавали в git clone. Это избавляет нас от необходимости вручную писать git remote add origin https://..... На этом процесс клонирования заканчивается.
для получения данных из удалённых проектов, следует выполнить:
$ git fetch [remote-name] Данная команда связывается с указанным удалённым проектом и забирает все те данные проекта, которых у вас ещё нет. После того как вы выполнили команду, у вас должны появиться ссылки на все ветки из этого удалённого проекта, которые вы можете просмотреть или слить в любой момент.
Когда вы клонируете репозиторий, команда clone автоматически добавляет этот удалённый репозиторий под именем «origin». Таким образом, git fetch origin извлекает все наработки, отправленные на этот сервер после того, как вы его клонировали (или получили изменения с помощью fetch). Важно отметить, что команда git fetch забирает данные в ваш локальный репозиторий, но не сливает их с какими-либо вашими наработками и не модифицирует то, над чем вы работаете в данный момент. Вам необходимо вручную слить эти данные с вашими, когда вы будете готовы.
Если ветка настроена на отслеживание удалённой ветки, то вы можете использовать команду git pull чтобы автоматически получить изменения из удалённой ветки и слить их со своей текущей. Этот способ может для вас оказаться более простым или более удобным. К тому же, по умолчанию команда git clone автоматически настраивает вашу локальную ветку master на отслеживание удалённой ветки master на сервере, с которого вы клонировали репозиторий. Название веток может быть другим и зависит от ветки по умолчанию на сервере. Выполнение git pull, как правило, извлекает (fetch) данные с сервера, с которого вы изначально клонировали, и автоматически пытается слить (merge) их с кодом, над которым вы в данный момент работаете.
Когда вы хотите поделиться своими наработками, вам необходимо отправить их в удалённый репозиторий вводим команду: git push . Чтобы отправить вашу ветку master на сервер origin (повторимся, что клонирование обычно настраивает оба этих имени автоматически), вы можете выполнить следующую команду для отправки ваших коммитов:
$ git push origin master Эта команда срабатывает только в случае, если вы клонировали с сервера, на котором у вас есть права на запись, и если никто другой с тех пор не выполнял команду push. Если вы и кто-то ещё одновременно клонируете, затем он выполняет команду push, а после него выполнить команду push попытаетесь вы, то ваш push точно будет отклонён. Вам придётся сначала получить изменения и объединить их с вашими и только после этого вам будет позволено выполнить push.
Если хотите получить побольше информации об одном из удалённых репозиториев, вы можете использовать команду git remote show . Выполнив эту команду с некоторым именем, например, origin, вы получите следующий результат:
$ git remote show origin
- remote origin Fetch URL: https://github.com/schacon/ticgit Push URL: https://github.com/schacon/ticgit HEAD branch: master Remote branches: master tracked dev-branch tracked Local branch configured for 'git pull': master merges with remote master Local ref configured for 'git push': master pushes to master (up to date) Она выдаёт URL удалённого репозитория, а также информацию об отслеживаемых ветках. Эта команда любезно сообщает вам, что если вы, находясь на ветке master, выполните git pull, ветка master с удалённого сервера будет автоматически влита в вашу сразу после получения всех необходимых данных. Она также выдаёт список всех полученных ею ссылок. Можно увидеть гораздо большее количество информации, если ввести команду git remote show:
$ git remote show origin
- remote origin URL: https://github.com/my-org/complex-project Fetch URL: https://github.com/my-org/complex-project Push URL: https://github.com/my-org/complex-project HEAD branch: master Remote branches: master tracked dev-branch tracked markdown-strip tracked issue-43 new (next fetch will store in remotes/origin) issue-45 new (next fetch will store in remotes/origin) refs/remotes/origin/issue-11 stale (use 'git remote prune' to remove) Local branches configured for 'git pull': dev-branch merges with remote dev-branch master merges with remote master Local refs configured for 'git push': dev-branch pushes to dev-branch (up to date) markdown-strip pushes to markdown-strip (up to date) master pushes to master (up to date)
Данная команда показывает какая именно локальная ветка будет отправлена на удалённый сервер по умолчанию при выполнении git push. Она также показывает, каких веток с удалённого сервера у вас ещё нет, какие ветки всё ещё есть у вас, но уже удалены на сервере, и для нескольких веток показано, какие удалённые ветки будут в них влиты при выполнении git pull.
Для переименования удалённого репозитория можно выполнить git remote rename. Например, если вы хотите переименовать прол в paul:
$ git remote rename прол paul $ git remote origin paul Такая операция также изменит имена удалённых веток в вашем репозитории. То, к чему вы обращались как прол/master, теперь стало paul/master.
Если по какой-то причине вы хотите удалить удаленный - можете использовать git remote remove:
$ git remote remove paul $ git remote origin При удалении ссылки на удалённый репозиторий все отслеживаемые ветки и настройки, связанные с этим репозиторием, так же будут удалены.