Заметки с тегом «git»

Поиск объединённых веток в Git

Я уже писал о том как получить список комитов, из которого можно сделать текстовый файл с изменениями между двумя ветками.

Если вы придерживаетесь подхода «одна фича — один бранч» и не делаете значимых комитов без веток, то вам подойдёт другой способ:

git branch -r --merged staging | \
  grep -v -E `(git branch -r --merged master | \
    tr "\n" " " | \
    sed -e "s/^ *//" -e "s/ *$//" | \
    tr -s " " "|")`

Эта последовательность команд выдаст список веток, которые были объединены в staging, но ещё не попали в master.

Оставте свой комментарий

Создание списка изменений из Git

Список всех коммитов от указанного объекта до HEAD можно легко получить с помощью команды

git log 1ff893.. --pretty=format:%s --no-merges > changes.txt

В файл changes.txt будут записаны только названия комитов, начиная с 1ff893 и до текущего состояния, за исключением точек слияния. В качестве начального объекта можно указать название тега или ветви.

В случае ветвления, обход дерева будет выполнен так, что в отчёт попадут все коммиты, которые не были предками для стартового объекта. Что само по себе достаточно удобно из-за того, что формально они могут быть старше, но объединены гораздо позже.

Дерево коммитов с точками слияния

Если, например, попытаться получить лог от S до F, то в файл буду записаны коммиты с номерами от 1 до 8. Коммиты M — это точки слияния, которые сами по себе не несут никакой новой функциональности, не будут включены в лог.

Дополнение

Оставте свой комментарий

Изменение регистра букв в названиях файлов в Git

При работе с Git в Windows есть неприятная проблема: если в имени файла неправильно были указаны заглавные и строчные буквы, то после простого переименования файла git status не покажет изменений. Это связано с тем, что ни FAT32, ни NTFS не учитывает регистр букв.

Если такая ситуация всё же возникла, то переименовать файл можно средствами Git:

git mv filename.txt FileName.txt –f

Ключ -f как раз нужен для того, чтобы принудительно внести изменения, так как с точки зрения файловой системы эти имена эквивалентны.

Обновление

Выходит, что разработчики, пользующиеся OS X, так же могут столкнуться с аналогичной ситуацией.

Комментарии к заметке: 3

Как git rebase помогает управлять коммитами

Команду git rebase обычно применяют тогда, когда хотят избежать точек слияния в ветке, применяя пулл-реквесты, или в процесс работы в одной ветке нескольких человек. Этот классический случай подробно разбирается во многих статьях.

Но, нигде не упоминается об интерактивном режиме и его возможностях. В этом режиме можно переставлять коммиты местами, объединять и разделять их, менять комментарии у произвольного коммита. Всё это может понадобиться, если использовать подход «микрокоммитов».

Комментарии к заметке: 1