Если у вас OS X - в консоли набрать $ sudo port install git-core +doc +bash_completion +gitweb
.
Если у вас Windows - скачать и устанвоить из msysgit.github.io.
-
GitHub Windows - Git-клиент с GUI от GitHub для Windows 7, 8 и 8.1.
-
GitHub Mac - Git-клиент с GUI от GitHub для Mac OS X 10.9+.
-
Git для Windows - 3 в 1: Git, bash-консоль и простой GUI-клиент.
-
SourceTree - бесплатный Git-клиент. Позволяет работать с Git без консоли в графической среде. Работает под Windows 7+ и Mac OS X 10.7+. Мультиязычное приложение. Чтобы использовать SourceTree, обязательно нужно изучить основы Git и уметь работать с ним в консоли.
Для новичков рекомендуется пройти небольшой обучающийся курс Git How To.
- Git How To — это интерактивный тур, который познакомит вас с основами Git. Тур создан с пониманием того, что лучшим способом научиться чему-нибудь — сделать это своими руками.
- Команды git - полный список команд на официальном сайте
- git - the simple guide
- Ежедневная работа с Git - статья на Хабре
- Что нам стоит Git настроить! - статья на Хабре
3.1. Стартуем проект из шаблона:
git clone [email protected]:CSSSR/csssr-project-template.git new-project && cd new-project
- клонируем в папкуnew-project
и переход в неё.rm -rf .git
- удаляем папку.git
, избавляясь от избыточной истории коммитов шаблона.git init
- инициализируем Git.git add -A
- индексируем все файлы.git commit -m 'chore(project): init project'
- коммитим и комментируем в соответствии с соглашением по коммитоименованию.git remote add origin <url>
- добавляем удалённый репозиторий, где<url>
- ссылка на git-репозиторий.git push origin master
- заливаем проект в удалённый репозиторий в веткуmaster
.- Если залить не удалось, проект уже не пустой и может содержать
readme.md
, поэтому нужно сделатьrebase
:
git pull --rebase origin master
- Если есть конфликты, то см. п. 3.4.
- Заливаем снова.
git clone <url>
- клонируем проект.
git pull --rebase origin master
- обновляем веткуmaster
с ключём--rebase
, чтобы избежать промежуточных коммитов.- Если конфликтов не произошло, то пропускаем этот пункт. Если есть, то правим руками (см. п. 3.4).
- Делаем изменения в коде, например, добавляем главную страницу.
git add -A
- индексируем изменения.git commit -m 'feat(main): add main page'
- закоммитили в соответствии с соглашением по коммитоименованию.git push origin master
- заливаем изменения в удалённый репозиторийй в веткуmaster
.
- Правим руками файлы, содержащие конфликты (посмотреть их можно через
git status
):
<<<<<<< HEAD
// 1 секция: Код текущей ветки
=======
// 2 секция: Наш изменения в коде
>>>>>>> master
Чтобы разрешить конфликт, нужно оставить только 2-ю секцию:
// 2 секция: Наш изменения в коде
- После этого индексируем изменения.
git add -A
- Далее нужно продолжить
rebase
с помощью команды:
git rebase --continue
- Если конфликтов больше нет и
reabase
завершился, то на это всё, если конфликты есть, то повторить итерацию.
git pull --rebase origin master
- обновляем веткуmaster
с ключём--rebase
, чтобы избежать промежуточных коммитов.git checkout -b feature/<name>
- создаём ветку сfeature/<name>
, где<name>
- название фичи.- Делаем изменения в коде, например, добавляем главную страницу.
git add -A
- индексируем изменения.git commit -m 'feat(main): add main page'
- закоммитили в соответствии с соглашением по коммитоименованию.git push origin feature/<name>
- заливаем нашу ветку в удалённый репозиторий.
- Находясь в ветке фичи выполняем команду:
git rebase master
- Если конфликтов нет, то пропускаем этот пункт. Если есть, то разрешаем конфликты (см. п. 3.4).
git push origin master
- заливаем итоговые изменения в удалённый репозиторий.
git commit --amend
- позволяет изменить название коммита. Если нужно включить ещё и изменённые файлы, то перед этим проиндексировать файлы.git reset --hard HEAD^
- полное удаление последнего коммита.
Чтобы было удобней работать, можно настроить алиасы для коротких команд.
Для пользователей OS X.
- В консоли набрать
nano ~/.bash_profile
. - Добавить нужные строки.
- Ctrl+X — Выйти.
Y — Сохранить.
[Enter] — Да, заменить.
Для пользователей Windows.
Алиасы находятся в файле .profile
.
в папке профиля c:\users\<profile>\
, где <profile>
- имя вашего профиля, если такого файла нет, то его нужно создать.
# Отображение текущего состояния.
alias gs='git status '
# Отображение коммитов с коротким названием, датой, комментарием и автором.
alias gl='git --no-pager log --pretty=format:"%h | %ad | %s%d [%an]" --graph --date=short'
alias glo=gl
alias glog=gl
# Добавление всех файлов с учётом удалённых и отображение текущего состояния.
alias gall='git add --all && git status'
alias gal=gall
alias ga=gall
# Добавление всех файлов с учётом удалённых и коммит с комментарием.
alias gam='git commit -am '
# Коммит с комментарием.
# Пример: gc 'Fixed bug.'
alias gc='git commit -m '
# Отображает текущую ветку среди всех имеющихся.
alias gb='git branch '
# Отправка в произвольную ветку.
# Пример: gpo master
alias gpo='git push origin '
# Отправка в ветку master.
alias gpm='git push origin master'
# Скачивание обновлений в ветку по умолчанию.
alias gpl='git pull '
# Скачивание обновлений в произвольную ветку.
# Пример: gplo mybranch
alias gplo='git pull origin '
# Скачивание обновлений в произвольную ветку и ребэйз.
# Пример: gpro master
alias gpro='git pull --rebase origin '
# Слияние ветки с ребэйзом
# Пример: gr mybranch
alias gr='git rebase '
# Продолжить ребэйз
# Пример: grc
alias grc='git rebase --continue '
# Скачивание обновлений всех последних изменний во всех ветках.
alias gfo='git fetch origin '
# Слияние веток.
# Пример: gm mybranch
alias gm='git merge '
# Слияние веток с флагом --no-ff.
# Пример: gmnf mybranch
alias gmnf='git merge --no-ff '
alias gmnff=gmnf
# Отмена коммита.
# Пример: gback
alias gback='git reset --soft HEAD^'
# Переключение по веткам.
# Пример: go master
alias go='git checkout '
# Создание новой ветки.
# Пример: gob new-branch
alias gob='git checkout -b '
# Дополнительные алисы на случай опечатки.
alias got='git '
alias get='git '
Эти алиасы не являются обязательными, настроить их можно так, как вам удобно.
После создания/изменения алиасов необходимо закрыть консоль и открыть заново, чтобы алиасы были доступны.
Используется подход conventional changelog.
Каждый коммит начинается с типа (type), области (scope) и сообщения (subject).
В самом конце может быть описание (body) с замечанием и т.п.
type
- тип изменений, который содержит коммит;scope
- область кода, в которой производились изменения;subject
- сообщение;body
(не обязательно) - подробно описание изменнений или важное замечание.
<type>(<scope>): <subject>
<BLANK LINE>
<body>
Примеры:
feat(ruler): add inches as well as centimeters
fix(protractor): fix 90 degrees counting as 91 degrees
refactor(pencil): use graphite instead of lead
Closes #640.
Graphite is a much more available resource than lead, so we use it to lower the price.
fix(pen): use blue ink instead of red ink
BREAKING CHANGE: Pen now uses blue ink instead of red.
To migrate, change your code from the following:
`pen.draw('blue')`
To:
`pen.draw('red')`
Каждая строка в коммите может содержать не более 100 символов.
feat
- новая фича;fix
- багофикс;docs
- изменения в документации;style
- форматирование кода или любые другие изменения, не влияющие на работу кода;refactor
- изменения в коде, которые не относятся к фиксам или фиче;test
- добавлен или обновлён тест;chore
- измененения в сборщике, зависимостях и т.п.
Может быть любым специфичным местом в коде, в котором были изменения. Не допускается более одной области.
- Только английский язык, никакого транслита;
- Используйте настоящее время, например,
change
, но неchanged
илиchanges
; - Первое слово с прописной буквы, не с заглавной;
- Не ставьте точку на конце.