Как замучить коллег с помощью git

внешний интерфейс Git

Правильная поза для кода слияния

Предзнаменование

Я не буду здесь говорить о проблеме gitflow, в самом простом сценарии коллеги A и B разрабатывают совместно, предполагая, что имя ветки — feature. Они работают вместе, чтобы отправить код для этой функции.

инициализация

B Jun открыл ветку и написал строку кода B

Jun B сообщает A, что код запроса добавлен в общедоступную ветку.

Куча операций свирепы как тигры

git checkout feature
git merge -s ours func_b

Сообщите мистеру Б, что я объединил ваш код.

В это время г-н Б увидел, что мой код пропал.

😠 demo git:(feature) cat code
😠 demo git:(feature) 

посмотри сноваgit log

😠 demo git:(feature) git log --oneline --decorate --graph
*   846f001 (HEAD -> feature) Merge branch 'func_b' into feature
|\\
| * 93972fb (func_b) code by b
|/
* 1c2b405 init

Нет проблем, коммиты были объединены.

Хотели бы вы воссоединиться?

😡 demo git:(feature) git merge func_b
Already up to date.

После тельца git думает, что его слили и не занимается этим. 🤬

принцип

Когда мы объединяем код, мы можем указать стратегию слияния.recursiveпо умолчанию.

  • resolve
  • recursive
  • octopus
  • ours
  • subtree

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

В связи с этим у нас может быть много товарищей по команде.

$ git merge --strategy=ours origin/master  # 合并主干代码,但丢弃主干变动
$ git pull -s ours # 拉取远程代码,并丢弃队友push的代码

конец

Почему я смотрю это? Потому что я тот, кого обманули 🤬. Я не знаю, как инструмент моего коллеги git GUI настроен для таких вещей 🤬

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

стратегия слияния git

Оригинальный адрес личного блога