If it's stupid but works, it isn't stupid.
https://geekbrains.ru/records/942

Системы контроля версий

  • Git

  • SVN

  • Mercurial



Программа SmartGit http://www.syntevo.com/smartgit/

Команды
discard удалить все неотправленные в репозиторий изменения
revert откатить коммит
reset удалить все коммиты

удалить ветку
git branch -d имя_ветки
git branch -D имя_ветки

объединение веток
merge изменений из главной ветки во вторичную(все изменения из мастера в другой ветке) (кликаем на ветку мастер)
merge вторичной ветки в главную(все изменения из другой ветки попадают в мастер) (кликаем на вторичную ветку)

правила работы с git
1. все новые изменения начинаются в новой ветке
2. файлы exe, bin добавляются в игнор (добавлять в игнор до первого коммита)
3. делать небольшие коммиты
4. для каждого отдельного изменения делать отдельный коммит

в логе команда cherry-pick подтянуть отдельный коммит из другой ветки

git log лог изменений

git branch проверить, в какой ветке находимся
git branch -a все ветки, в том числе и удалённые

git branch имя_ветки создать новую ветку

git checkout имя_ветки сменить ветку

git push origin имя_ветки отправить изменения в ветку

слияние
git checkout master переходим в ветку master
git branch -a проверяем, что находимся в правильной ветке
git merge имя_ветки_в_которую_сливаем_изменения merge
git push origin push в удаленный репозиторий
git branch -d имя_ветки удаляем локальную ветку

Мини-конспект
git branch -a - показать все ветки
git branch love - создать ветку love
git checkout love - переключиться в ветку love
git push origin love - отправить ветку love в удалённый репозиторий
git merge love (сначала переключиться на мастер git checkout master) - слить ветку love с master
git branch -d love - удалить ветку love из локального репозитория
git push origin --delete love - удалить ветку love из удалённого репозитория
git push origin - сделать push, так как локальные изменения в master`е мы в удалённый ещё не отправляли

Мини-конспект.
1. Разработку лучше вести не в ветке master, а в другой ветке, например, develop, новые функции программы ветвить от develop, тестить и фиксить в develop, и только когда код отлажен до какой-то стабильной версии программы, сливать изменения в master.
2. При этом удобно добавить тэг с номером версии и изменениями что допилили в этой версии (release notes).
3. По тэгу легко найти нужную версию в логе, и можно по этому коммиту (вообще можно по любому коммиту) воссоздать в отдельной ветке состояние программы в этой версии.

Команда checkout скопирует любой снимок из репозитория в рабочий каталог.

История изменений
git log
git log --pretty=oneline


Данные
git config user.name
git config user.email
git config --list


git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short

Алиасы
https://githowto.com/ru/aliases

Отмена изменений в рабочем каталоге
git checkout hello.html
git status
cat hello.html

— откат изменений в рабочем каталоге к состоянию в репозитории

команда reset сбрасывает буферную зону, но не изменяет рабочий каталог
git reset HEAD hello.html
(очищает буферную зону от изменений, которые мы только что проиндексировали, но (по умолчанию) не изменяет рабочий каталог.
чтобы сбросить изменения в рабочем каталоге, можно использовать команду git checkout имя_файла

отмена коммита
git revert HEAD
git revert HEAD --no-edit
(автоматически создаст комментарий к коммиту-реверту)
HEAD — отмена последнего коммита
с хэш-значением - отменить любой коммит

удалить коммит целиком
команда reset
git reset --hard v1
v1 - тег, до которого мы сбрасываем коммиты в ветке (или хэш-значение)
Параметр --hard указывает на то, что рабочий каталог должен быть тоже сброшен (обновлен в соответствии с новым head ветки)

внесение изменений в коммит
git add hello.html
git commit --amend -m "Add an author/email comment"


@темы: Git, Учебники, Ссылки