Git
сращивание
Поиск…
Синтаксис
- git merge another_branch [опции]
- git merge --bort
параметры
параметр | подробности |
---|---|
-m | Сообщение, которое должно быть включено в фиксацию слияния |
-v | Показать подробный вывод |
--abort | Попытайтесь вернуть все файлы обратно в их состояние |
--ff-only | Прерывается мгновенно, когда требуется слияние. |
--no-ff | Принуждает к созданию слияния, даже если это не является обязательным |
--no-commit | Притворяется, что слияние не позволило проверить и настроить результат |
--stat | Показывать diffstat после завершения слияния |
-n / --no-stat | Не показывать diffstat |
--squash | Позволяет выполнить одно фиксацию в текущей ветке с объединенными изменениями |
Объединить одну ветку в другую
git merge incomingBranch
Это объединяет ветвь incomingBranch
в ветку, в которой вы сейчас находитесь. Например, если вы в настоящий момент находитесь в master
, то incomingBranch
будет объединен в master
.
Слияние может создавать конфликты в некоторых случаях. Если это произойдет, вы увидите сообщение « Automatic merge failed; fix conflicts and then commit the result.
Вам нужно будет вручную отредактировать конфликтующие файлы или отменить попытку слияния, запустите:
git merge --abort
Автоматическое слияние
Когда коммиты на двух ветвях не конфликтуют, Git может автоматически объединить их:
~/Stack Overflow(branch:master) » git merge another_branch
Auto-merging file_a
Merge made by the 'recursive' strategy.
file_a | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Прерывание слияния
После запуска слияния вы можете остановить слияние и вернуть все в свое состояние предварительного слияния. Использовать --abort
:
git merge --abort
Сохранять изменения только с одной стороны слияния
Во время слияния вы можете передать --ours
или - --theirs
git checkout
чтобы принять все изменения для файла с одной стороны или другого слияния.
$ git checkout --ours -- file1.txt # Use our version of file1, delete all their changes
$ git checkout --theirs -- file2.txt # Use their version of file2, delete all our changes
Объединить с фиксацией
Поведение по умолчанию - это когда слияние разрешается как перемотка вперед, только обновляет указатель ветвления, не создавая фиксацию слияния. Используйте --no-ff
для разрешения.
git merge <branch_name> --no-ff -m "<commit message>"
Поиск всех ветвей без слияния изменений
Иногда у вас могут быть ветви, лежащие вокруг, которые уже сменили их изменения на мастера. Это находит все ветви, которые не являются master
, которые не имеют уникальных коммитов по сравнению с master
. Это очень полезно для поиска ветвей, которые не были удалены после того, как PR был объединен с мастером.
for branch in $(git branch -r) ; do
[ "${branch}" != "origin/master" ] && [ $(git diff master...${branch} | wc -l) -eq 0 ] && echo -e `git show --pretty=format:"%ci %cr" $branch | head -n 1`\\t$branch
done | sort -r