https://git.jerdin.ru/
Сначала нужно его изучить
http://githowto.com/ru
Говорят он лучше, чем SVN.
Учебник, по которому получается
http://ruseller.com/lessons.php?id=2035&rub=28
GITHUB клиент под windows
https://desktop.github.com/
Ещё один хороший учебник
https://git-scm.com/book/ru/v2/Команды-Git-Основные-команды
Rebase!!!
https://htmlacademy.ru/blog/27-how-to-squash-commits-and-why-it-is-needed
- Спойлер
- Как склеивать коммиты
Сначала узнаем, сколько коммитов нужно склеить. Эта команда покажет, какие коммиты у вас прибавились по сравнению с веткой master:
git cherry -v master
А эта — сколько их:
git cherry -v master | wc -l
Отлично, у меня 5 коммитов. Теперь я хочу переписать историю с момента HEAD~5, т.е. с того, что было 5 коммитов назад. Для этого я делаю так:
git rebase -i HEAD~5
флаг -i — значит в интерактивном режиме. У меня открывается такой файл:
Тут список моих коммитов и большой комментарий о том, что я могу сделать. Из списка комманд видно, что мы можем использовать squash или fixup для того, чтобы склеить коммиты. Первый пригодится тогда, когда вы хотите изменить коммит-месседж, а второй — когда хотите использовать коммит-месседж первого. Итак, чтобы склеить все коммиты, я делаю вот так:
То есть я говорю гиту «используй первый коммит, а остальные приклей к нему». Потом я сохраняю файл и закрываю его. Гит склеивает коммиты и предлагает мне ввести коммит-месседж (показывает коммит-месседжи всех склеенных коммитов):
Коммит-месседжи склеенных коммитов
Коммит-месседжи склеенных коммитов
Я хочу оставить только последний:
Коммит-месседж результирующего коммита
Коммит-месседж результирующего коммита
Сохраняю файл и смотрю лог:
git log
Ура, остался один коммит с нужным сообщением.
Теперь нужно вашу работу отправить на ваш гит-сервер. Обычно вы делаете это с помощью git push, но сейчас вам это не удастся:
git push
Это потому, что ваша локальная ветка и ветка на сервере отличаются. Причём не просто в локальной ветке есть некоторые коммиты, которых нет на сервере, но и старых коммитов нет. Ведь у вас теперь один новый коммит вместо всех прежних. Чтобы запушить на сервер все ваши изменения, несмотря на конфликт, запустите пуш с флагом --force:
git push --force
Фишка в том, что надо
1. удалить незакоммиченые файлы
2. несколько раз сделать git --continue, когда ГИТ будет падать))