Про гит в гугле информации предостаточно. И, скорее всего, моя статейка затеряется где-нибудь на последних страницах результатов в поисковике. Но цель этой писанины — просто сделать конспекты самой себе. Ну и, как дополнение, сделать эти заметки доступными для других. Кроме того, можно будет подопечным джуниорам просто давать ссылку, чтобы курили и изучали))
Для лучшего понимания гита есть очень хорошая интерактивная обучалка.
Все команды можно посмотреть тут GIT Workflow.
1. Посмотреть изменения, которые вы внесли, но которые еще не закоммичены. Хотя правильнее сказать, не сами изменения, а список файлов:
4. «Спрятать» текущие изменения в
6. Отправить свои локальные commit’ы на сервер:
7. «Достать» изменения из
Теперь парочка команд, которые оторваны от основного
8. Добавить тег последнему
Этот список постепенно будет дополнятся. Наверное…
А напоследок приведу вам забавный разговор, который однажды случился у меня на работе:
Для лучшего понимания гита есть очень хорошая интерактивная обучалка.
Все команды можно посмотреть тут GIT Workflow.
Итак, поехали
Команды тут представлены примерно в том порядке, в котором они используются в рабочем процессе. Поэтому не удивляйтесь, что вроде бы связанные команды описаны с очень далёкими номерами друг от друга.1. Посмотреть изменения, которые вы внесли, но которые еще не закоммичены. Хотя правильнее сказать, не сами изменения, а список файлов:
git status
2. Добавить внесённые изменения в stage
:
git add -u // добавятся изменения только в тех файлах, которые уже находятся под гитом
git add -A // добавятся и новые файлы в том числе
git add <filename> // добавится указанный файл, можно использовать паттерны в стиле dao/*
2a. Если вы случайно добавили в stage
изменения файла, которые не хотите коммитить (например, конфиги, которые пока что изменили только для себя), то этот файл можно удалить из stage
:
git reset HEAD <filename>
3. Сделать локальный commit
. В него попадут все изменения, которые были добавлены в stage
. Обратите внимание, что на первой строке двойная кавычка не закрывается. Таким образом можно писать commit
-сообщение в несколько строк:
git commit -m "Исправление какого-то бага
бла-бла-бла…"
Небольшая ремарка по поводу «что такоеstage
». Можно его рассматривать как некоторыйsnapshot
изменений. Обычно я объясняю не очень понятно, поэтому попробую сделать это на примере. Итак, у вас есть файлmain.test
. Предположим, внутри него вы добавили строку
И выполнили командуsuper test = true
Затем изменили эту строку наgit add main.test
Вот тут после выполнения командыsuper-puper-test=false
получится интересная ситуация. Вgit commit
commit
попадёт строка «super test = true
». А строка «super-puper-test=false
» будет локальным незакомиченным изменением. Как-то так.
4. «Спрятать» текущие изменения в
stash
(«карман»). // тодо: надо добавить много текста с описанием, что такое stash
, но мне теперь лень, поэтому потом как-нибудьgit stash -A
git stash save "Я тут делала какую-то фичу"
5. Забрать изменения с сервера:git pull
git pull --rebase // тодо: описать, что такое ребейз и зачем он нужен, при мерже не использовать ни в коем случае!!!
6. Отправить свои локальные commit’ы на сервер:
git push
git push -f // тодо: подробнее про этот параметр
7. «Достать» изменения из
stash’а
. Тут достаётся изменение, которое было спрятано последним (мы же помним, что такое стэк, правда?) и эти изменения из stash’а
удаляются, но если возникнут конфликты, то не удалится:git stash pop
Чтобы изменения оставить в stash’е
, можно использовать такую команду:git stash apply
Теперь парочка команд, которые оторваны от основного workflow
.
8. Добавить тег последнему commit’у
:git tag v_0.1-beta
9. Отправить информацию по тегам на сервер:git push --tags
10. Посмотреть красивое дерево коммитов:git log --graph --decorate=full --all
11.// тодо: перебароть всё-таки лень и подробнее описать про вишенкиgit cherry-pick <commit> -n
12. Посмотреть, какие изменения были внесены определённым commit’ом
. Как дополнительная опция — можно указать конкретный файл:git log -u -1 <commit> [-- <filename>]
13. Аналогично, как и в предыдущем пункте, только для stash’а
:git stash show -p stash@{2}
14. Отменить последний локальный commit
. Все изменения из commit’а
будут считаться локальными незакомиченными изменениями:git reset --soft "HEAD^"
15. Создать новую ветку и стразу же перейти на неё:git checkout -b new_branch_name
16. Удалить ветку:git branch -d some_branch_name
Этот список постепенно будет дополнятся. Наверное…
А напоследок приведу вам забавный разговор, который однажды случился у меня на работе:
Насяльника: не забудь про ребейз
Юный Падаван: не забуду
Юный Падаван: я вроде как всегда делаю
Насяльника: надо не вроде а точно
Насяльника: в любое время в любом состоянии
Насяльника: на вопрос "что делать после коммита"
Юный Падаван: выпить?
Юный Падаван: :D
Насяльника: ты должен ответить "пул --ребейз"
Комментариев нет:
Отправить комментарий