GIT - система контроля версий для совместной разработки программ

Создан: 19.05.16
Модиф: 19.05.16
Иванов Аркадий.


 

 

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

Я довольно долго использовал Subversion при разработке программ на Java, C, shell и при написании Tex-документов. Глюки SVN в Eclipse заставили посмотреть на альтернативные решения. Здесь я записал для себя несколько команд и файлов GIT-а, которые нужны при работе.

git init  - инициализация GIT в данном каталоге. Создает подкаталог .git и теперь содержимое этого каталога можно отдать под управление GIT-y.

 

git add имя_файла - вводит указанный файл под управление GIT-у. 
Например: 
git add *
Укажет, что все файлы текущего каталога и подкаталогов должны быть зарегистрированы в GIT-е, как отслеживаемые им.


Файл .gitignore  служит для указания тех файлов, которые я не хочу помещать под управление GIT. 
Пример содержимого:
# игнорирую Postscript-файлы
*.ps
# игнорирую PDF-файлы
*.pdf
# файлы PDF из каталога images мне нужны в системе управления версиями.
!images/*.pdf

 

git status - даст описание файлов, которые подготовлены к коммиту.

 

git commit - совершает запись в репозиторий всех проведённых изменений для файлов, которые были добавлены с помощью add.

 

git commit -a - запись в репозиторий с автоматическим добавлением в коммит файлов, которые были изменены. Позволяет пропустить шаг "git add"

 

git commit -m "text about commit" - задаёт описание коммита и проводит коммит без запуска редактора текста.

 

git clone texfiles texfiles1  - клонирует GIT-репозиторий из каталога texfiles в каталог texfiles1.

 

git clone --bare texfiles texfiles1.git - клонирует GIT-репозиторий из каталога texfiles в каталог texfiles1.git. В каталоге texfiles1.git будет "голый" репозиторий без исходных файлов. Сами файлы будут присутствовать только в базе репозитория в каталоге texfiles1.git/.git. Этой командой я подготавливаю репозиторий, который будет использоваться для работы с удалённых компьютеров. Расширение .git использовано для названия каталога из-за соглашения на именование каталогов.

 

git clone ssh://arc@mygithostname/GIT/texfiles1.git - клонирует GIT-репозиторий с удалённого хоста "mygithostname" из подкаталога ~/GIT/texfiles.git пользователя arc в подкаталог texfiles1 текущего каталога локальной машины.

 

git remote -v - даст описание удалённых репозиториев, которые вы используете для своего проекта. Когда вы клонировали репозиторий с удалённого сервера у вас автоматически будет удалённый репозиторий origin.

 

git fetch - получить файлы с удалённого репозитория, которых у вас нет.

 

git pull - - получить файлы с удалённого репозитория и слить изменения с изменениями ваших файлов.

 

git push - отправить изменения в удалённый репозиторий.

 

Git в Android-studio

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

В Меню [VCS] -> [Enable Version Control Integration] - выбираю из списка "Git"

В рабочем каталоге проекта  Android-studio запустит "git init" и сообщит:
Created Git repository in /home/arc/AndroidStudioProjects/SportEntertainment

В консоли перехожу в этот каталог и сообщаю git-у о своём удалённом репозитории:

git remote add origin ssh://arc@mygitserver/home/arc/GIT/SportEntertainment.git

Перехожу на сервер, где я держу удалённый git-репозиторий  и в каталоге SportEntertainment.git делаю:

git --bare init

Теперь в Android-studio могу делать операции git-а:

Правой кнопкой мыши щёлкаю на каталоге приложения и добавляю файлы для commit-а:

Git -> +Add

Затем делаю Git -> Commit или Commit+Push

В предыдущем шаге с Push иногда странные проблемы, поэтому Push делаю через:

Правой кнопкой мыши на каталоге -> Git -> Repository -> Push  и Push tags выбираю All.

Когда Android-studio слишком сильно упирается, никто не мешает сделать из консоли:
commit -a 
push --all