Для того чтобы создать новый репозиторий git необходимо
открыть папку где вы хотите его разместить и выполнить команду
git init
Создать локальную рабочую копию репозитория можно командой
git clone /путь/к/репозиторию
когда используется удаленный сервер, команда будет
git clone юзер@хост:/путь/к/репозиторию
Ваш локальный git репозиторий состоит из трех "сущностей".
Рабочий каталог
(Working Directory) содержит файлы.
Индекс
(Index) или область подготовленных файлов (Staging Area),
содержит информацию о том, что должно войти в следующий коммит и
HEAD
указывает на последний коммит что вы сделали.
Чтобы подготовить изменения (добавить их в Индекс) используйте
git add <имя_файла>
git add *
Это первый шаг в основном рабочем процессе. Сделать коммит подготовленных изменений можно командой
git commit -m "Описание коммита"
Теперь изменения закреплены в локальном репозитории и на них указывает HEAD, но еще не в удаленном репозитории.
Чтобы отправить эти изменения в ваш удаленный репозиторий, выполните
git push origin master
Можно изменить master на любую другую ветвь чтобы отправить изменения на неё.
Если вы еще не клонировали существующий репозиторий и хотите подключить ваш к удаленному, вам нужно добавить его, выполнив
git remote add origin <адрес_сервера>
Теперь вы можете отправлять изменения на удаленный репозиторий
Ветки используются для разработки функционала изолированного от остального. Ветка master используется по умолчанию когда вы создаете репозиторий. Используйте другие ветки для разработки и слияние в master когда разработка завершена.
Создать новую ветку с названием "feature_x" и переключиться на неё можно командой
git checkout -b feature_x
переключиться обратно на master
git checkout master
удалить ветку
git branch -d feature_x
ветка не будет доступна тем, кто пользуется с вами удаленным репозиторием пока вы не отправите её туда
git push origin <имя_ветки>
Обновить ваш локальный репозиторий, можно командой
git pull
которая заберет изменения из удаленного репозитория и проведет слияние с активной веткой.
Для того чтобы слить другую ветку с активной (например master), используйте команду
git merge <имя_ветки>
В обоих случаях git пытается автоматически слить изменения. К сожалению, это не всегда возможно и результатом станет конфликт.
Вы ответственны за разрешение возникших конфликтов,
путем ручного редактирования файлов указанных git. После изменений вам надо пометить их как слитые
git add <имя_файла>
перед слиянием вы можете предварительно посмотреть на изменения
git diff <имя_ветки> <имя_другой_ветки>
Рекомендуется использовать метки для закрепления момента выпуска версий. Это популярная практика, которая так же используется в SVN. Создать новую метку с именем 1.0.0 можно выполнив
git tag 1.0.0 1b2e1d63ff
1b2e1d63ff это первые десять цифр уникального идентификатора (id) с которым будет связана метка. Чтобы посмотреть идентификаторы коммитов, выполните
git log
Можно использовать меньшее количество символов в качестве идентификатора с учетом того что он является уникальным.
В случае если вы сделали что-то не то, вы можете заменить локальные изменения, используя команду
git checkout -- <имя_файла>
произойдет замена изменений в вашем рабочем каталоге, на то что сейчас находится в HEAD. Изменения уже внесенные в индекс, так же как новые файлы будут сохранены.
Если же вы хотите удалить все ваши локальные изменения и коммиты, получите (fetch) последние изменения с сервера и укажите локальной ветке master на них вот так
git fetch origin
git reset --hard origin/master
встроенный в git графический интерфейс
gitk
использовать цветной вывод в терминале
git config color.ui true
выводить в логе коммит на одной строке
git config format.pretty oneline
интерактивный способ добавления в индекс
git add -i