Sunday, September 29, 2019

Сливаем ветки и удаляем историю в одной из веток в git

Всем привет!

Сегодня быстрая заметка для удаления всех комментариев из той ветки, которую в дальнейшем планируем удалять. Это реализуется с помощью команды --squash. Представим, что мы хотим заливаем все изменения в ветку develop из ветки feature/simple-test. И удалим в дальнейшем ветку feature/simple-test. Выглядеть такая работа будет таким образом
git checkout develop 
git merge --squash feature/simple-test
git commit -m "merge feature"

Saturday, September 21, 2019

Удаление пакетов с помощью npm

Доброго дня!

Вот небольшой набор команд, каким образом можно из package.json удалять пакеты
npm uninstall
npm uninstall --save
npm uninstall --save-dev
npm -g uninstall --save

Удаление веток в git

Без лишних слов, давайте приступим к удалению веток. Пусть у нас будет ветка feature/simple-fix, над которой и будем экспериментировать

Для начала, удалим ветку у себя локально
git branch -d feature/simple-fix
Для удаления ветки, которая находится удаленно, нам необходимо выполнить команду
git push origin --delete feature/simple-fix
Вот так быстро и легко можно подчистить ветки. Всем успехов! 
 

Очистить все коммиты в git

Всем привет!

Сегодня мы разберем проблему, когда необходимо стереть всю историю комментариев, но при этом оставить все изменения в текущей ветке. Итак, поехали.

Во-первых, нам необходимо создать сиротскую ветку от текущей ветки (которую мы потом будем удалять). Пусть наша текущая ветка будет называться develop. Создадим сироту
git checkout --orphan develop_temp
В данной ветке нет ни одного комментария, но есть все файлы, которые были в ветке develop. Теперь нам нужно добавить все файлы в нашу новую ветку develop_temp
git add -A
git commit -am "first commit"
Идем дальше. Удаляем нашу ветку-родитель (у нас же есть сирота, а у сироты не бывает родителей ;) )
git branch -D develop
После этого переименовываем ветку-сироту по имени ветки-родителя
git branch -m develop
И наконец зальем все в нашу репу
git push -f origin develop
P.S. в данном подходе есть одна проблема, при мерджинге (или ребейзе). Проблема эта выглядит как сообщение об ошибке
fatal: refusing to merge unrelated histories
Происходит это потому, что два несвязанных проекта пытаются смерджиться. Решается эта проблема при первом мердже командой allow-unrelated-histories. Как вариант это работает вот так
1. git pull origin master --allow-unrelated-histories 
2. git merge develop --allow-unrelated-histories
Да вот собственно и все. Всем успехов! 

Friday, September 20, 2019

Слияние веток в git

Пусть у нас есть 2 ветки и мы не хотим пробегаться по всем изменениям и подтверждать, есть потребность залить слиться сразу, доверяя ветке, где находятся наши изменения

  • master (куда мы хотим залить наши изменения)
  • develop (где находятся наши изменения после коммитов)
Вначале разберемся с командой merge. Тут все просто. Заходим в master-ветку
git checkout master
После этого сливаемся, при этом говорим, что принимаем изменения ветки develop - указываем параметр theirs, если же хотим принять изменения ветки master, то указываем параметр ours
git merge -X theirs develop
Что касаемо rebase, то тут все аналогично. Т.е. мы находимся в той ветке, которую будем заливать
git checkout develop
После этого мы выполняем команду rebase и принимаем все изменения автоматически, а после нее заливаем изменения в master
git rebase -X theirs master 
git checkout master
git merge develop
Дальше, продолжайте работать. Всем успехов!