Форум программистов, компьютерный форум, киберфорум
Git
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/389: Рейтинг темы: голосов - 389, средняя оценка - 4.85
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925

Git: инструкция по применению

25.01.2016, 14:52. Показов 87324. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Git
https://git-scm.com/

Git (произн. «гит») — распределённая система управления версиями.

Предисловие

Примеры будут под Windows. Линуксойды в большинстве своем опытные пользователи и разжевывать элементарные вещи им не нужно.

Зачем и когда использовать?
  • Вы делаете какой то проект. В один момент вы захотели сделать какие то глобальные изменения. С помощью git'а можно создать отдельную ветку, в ней внести изменения, если в будущем они вас не устроят можно вернуться (переключаться) к предыдущей версии.
  • Над одним проектом работают несколько разработчиков. Создается общий репозиторий и разработчики добавляют в него свой код. Когда нужно разработчик обновляет свой локальный проект получая обновления от других разработчиков.
  • Вы работаете над проектом с разных компьютеров. Git позволяет синхронизировать код на разных компьютерах.

Установка и настройка

Нужно скачать и установить дистрибутив под вашу операционную систему.
Нужно задать в переменной PATH путь к папке /Git/bin. (если этого не сделать, то при работе с Git из командной строки нужно будет указывать полный путь к нему, иначе будет появляться сообщение "не является внутренней или внешней командой").

Общее

У git'a два типа репозиториев - локальный и глобальный.
Локальный - создается в папке вашего проекта в папке .git
Глобальный - находится на удаленном сервере.
Локальный создается всегда, глобальный в некоторых случаях может не подключаться (но как правило подключается)

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

Git подразумевает работу с командной строкой, но в IDE как правило есть интеграция с git, и с командной строкой обычно не работают. Я начну с поверхностного знакомства с командной строкой. (В разных IDE работа с Git может не много отличаться, а командная строка общий вариант)

Проект с нуля

Создать папку для проекта
Bash
1
mkdir /path/to/your/project
Перейти в созданную папку
Bash
1
cd /path/to/your/project
Создать локальный репозиторий
Bash
1
git init
Создать структуру проекта, и открыть в IDE.
*Так делать не совсем удобно.

Более удобный вариант
Создаете в IDE проект.

Bash
1
cd /path/to/your/project
Bash
1
git init
Или (для IDEA) VCS -> Enable Version Control Integration -> Git -> OK (Как в других - не знаю)

Но в данном случае созданный проект у нас уже не пустой. в нем есть файл pom.xml (Maven) и файл .iml и файлы в папке .idea
helloworld.iml и .idea - это настройки проекта для конкретной IDE. Помещать их в репозиторий не стоит, т.к. не далеко не факт что другие разработчики будут пользоваться такой же IDE как и вы. (У других IDE тоже есть какие то конфигурационные файлы их тоже в репозитории не добавляют)

А вот файл pom.xml нам нужно будет добавить, и, если есть, и другие полезные файлы.
Bash
1
git add pom.xml
(Для IDEA) Выделить файл -> VCS -> Git -> ADD или (Ctrl + Alt + A)

ВАЖНО! После данной команды файл еще не попадет в локальный репозиторий. А только добавиться в список тех файлов которые поместятся в репозиторий при получении соответствующей команды.

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

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

На прошлом шаге, мы создали проект. Активировали локальный git репозиторий. И добавили существующие файлы в список файлов, помещаемых в локальный репозиторий.

Т.е создавая новый файл в проекте, его нужно добавлять в этот список командой add. (IDEA спрашивает добавлять в список или нет при создании каждого файла).

Что бы файлы поместились в локальный репозиторий - нужно сделать commit.
Bash
1
git commit -m 'any comments'
(Для IDEA) VCS -> Commit Changes или Ctrl + K

По сути: Создали новые классы, добавили изменения в существующие - делаем Commit сохраняя изменения.
После commita, можно сделать новую ветку (branch). Поработать в ней. Сделать коммит. Создать еще одну ветку, в ней поработать. Сделать commit. Потом вернуться к первой ветке ну и т.д.

Работу с ветвлением описывать не буду. Читайте учебник

Использование удаленного репозитория
  • Сначала нужно создать этот самый удаленный репозиторий.
  • Заходите на bitbucket.org или github.com
  • Регистрируетесь.
  • Создаете удаленный репозиторий. (Имя может отличаться от того как вы назвали свой проект локально)/
  • После создания репозитория ищете ссылку на него. Она должна выглядеть примерно так: https://github.com/reisal78/HelloWorld.git
  • И выполняем привязку нашего локально репозитория к глобальному.
    Bash
    1
    
    git remote add origin https://github.com/reisal78/HelloWorld.git
    Как делать в IDE - не знаю. (Делаю через командную строку)
  • Для того, что бы скопировать локальный репозиторий в глобальных используется команда push
    Bash
    1
    
    git push -u origin master

И еще раз...
Для того что бы выложить код в удаленный репозиторий вам нужно.
  • Создать проект
  • Создать локальный репозиторий
  • Добавить нужные файлы проекта в список помещаемых в локальный репозиторий
  • Сделать commit этого списка.
  • Привязать локальный репозиторий к удаленному.
  • Сделать push в глобальный репозиторий.

Использование чужих репозиториев
  • Находите нужный репозиторий, ищите его адрес. https://github.com/reisal78/HelloWorld.git
  • Переходите в папку с проектами и выполняете клонирование
    Bash
    1
    
    git clone https://github.com/reisal78/HelloWorld.git
    (Для IDEA) VCS -> Checkout from Version Control -> Git
При таком клонировании вы не сможете делать правки в глобальном репозитории (за исключением того, если вы хозяин этого репозитория, или хозяин вашему аккаунту не предоставил соответсвующие права)
Т.е вы можете изменять код, делать коммиты в локальный репозиторий, а при попытке пуша - будет ошибка.

Для того, что бы была возможность внести изменения в чужой репозиторий, нужно:
  • Сделать Fork (копию) этого проекта, в свой удаленный репозиторий.
  • Склонировать эту копию.
  • Внести изменения.
  • Сделать коммит.
  • Сделать пуш.
  • И сделать Pull. (Создать Pull запрос) (Можно сделать на сайте)
Этот пул запрос появится у хозяина репозитория, с которого вы делали форк. И хозяин может принять ваши правки, а может и не принять =)

Игнорирование служебных файлов.

Довольно часто требуется исключить из репозитория какие то файлы. Например: файл с паролями к БД. Или файлы конфигурации IDE.

Сделать это можно с помощью файла .gitignore в корневой папке проекта. (Внутри указываются маски исключений (гуглите синтаксис)). Этот способ используется "разовых" исключений.

А вот конфигурационные файлы IDE вам придется игнорировать в каждом проекте. Что бы для каждого проекта не создавать .gitignore можно сделать так:
  • В домашней папке пользователя (для windows) C:\Users\UserName (UserName заменить на ваше) создаем файл с именем .gitexcludes
  • Внутри него с таким же синтаксисом как в .gitignore указываем что игнорировать.
    Пример для IDEA
    Bash
    1
    2
    
    .idea
    *.iml
  • Там же создаем (если его нет) файл .gitconfig и добавляем в него:
    Bash
    1
    2
    
    [core]
        excludesfile = ~/.gitexcludes
  • Теперь ваши конфигурационные файлы будут игнорироваться гитом.

Для Linux
Bash
1
$ nano ~/.gitexcludes
В файл добавим
.idea
*.iml
Bash
1
$ git config --global core.excludesfile ~/.gitexcludes
Послесловие

В IDEA есть плагины для более удобной работы с github (входит по умолчанию) и с bitbucket (нужно поискать, давно не поддерживается, но есть рабочая фан версия). Те способы что я описал универсальны для всех репозиториев, хоть и больше действий требуют.

Например что бы закинуть ваш проект на гитхаб в IDEA в меня VCS достаточно выбрать share project on github. Он сам создаст и локальный репозитрий, и глобальный, сам закоммитит и запушит за одно действие. Но лучше иметь представление как это все сделать ручками, ведь не факт что на работе вы будете пользоваться гитхабом, а не каким нибудь "кустарным" репозиторием в локальной сети.
18
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.01.2016, 14:52
Ответы с готовыми решениями:

fatal: Not a git repository (or any of the parent directories): .git
Подключил EGit для разработки командных проектов ... Теперь при запуске программ хранящихся на компе на консоль выводит: fatal: Not...

Silverhof SSB-751 Инструкция по применению
уважаемые, есть вот такой калькулятор в нём 240 функции пользуюсь только сложением.... хотелось бы хотя бы 100 функций узнать,...

Команда $git init создает .git не в той папке
Привет. Не нашел на форуме раздела, где мог бы задать вопрос по работе git, пишу поэтому сюда. После команды $git init в git-bash папка...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.01.2016, 14:52
Помогаю со студенческими работами здесь

Чем отличается git merge От git pull
в обоих случаях я забираю изменения в свою ветку. в чем различие?

fatal not a git repository (or any of the parent directories) .git
Вылетает такая ошибка, на всех проектах: fatal not a git repository (or any of the parent directories) .git Проекты рабочие. В чем...

Not a git repository or any of the parent directories git
Всем привет. Случилось нечто досадное. Я закончил работу в локальной ветке и перешел в мастер, чтобы слить изменения и запушить их. ...

Почему git add . и git add * это плохо? И как тогда быть?
Вопрос по гиту, почему git add . и git add * это плохо? и как тогда быть?

по применению ini_set()
Подскажите где эту возможность можно использовать кроме отладки? Я только понял что она позволяет выводит на экран ошибки сервера. Спс.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Закрытая тема Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru