Ответ 1
Это аналогичный шаблон для поддержки локального набора патчей для восходящего проекта, который вы не контролируете. Самый простой способ справиться с этим - иметь промежуточную ветвь, с которой все изменения объединяются, например:
___________________________ master
\__________________________ config-changes
\_____________________ daily-work
master
содержит все, что нужно использовать. Единственными вещами, совершенными в config-changes
, являются изменения, которые вы хотите легко восстановить при их совместном использовании. daily-work
- это ветка, в которой вы выполняете всю свою работу. Чтобы настроить ее, выполните следующие действия:
# (no local config changes should be in master at this point)
git checkout -b config-changes master
# Make your config-related changes that you don't want to share
git commit -am "Made local config changes"
git checkout -b daily-work
# Work and commit like normal
Когда вы будете готовы поделиться своими изменениями, выполните следующие действия:
git rebase --onto master config-changes daily-work
git checkout master
git merge daily-work
Это вернет все изменения, сделанные в config-changes
, но в противном случае сделайте так, чтобы вы были разветвлены непосредственно из master
. Обратите внимание, что после того, как вы сделаете эту перезагрузку, если вы хотите продолжить работу в daily-work
, вам нужно вернуть ее обратно на config-changes
, но лучше создать новую ветку для каждого изменения.
Если вам нужно снять новые изменения с master
, выполните:
git checkout master
git pull
git checkout config-changes
git merge master
Слияние повторно использует локальные изменения конфигурации для последнего мастера. Затем вы можете создать новую ветвь daily-work
или объединить config-changes
в старую, если это необходимо. В принципе, вы никогда не сливаетесь непосредственно из master
в daily-work
. Вы всегда проходите через config-changes
.
Сначала кажется, что много работы, но как только вы это сделаете один или два раза, вы увидите это намного проще, чем сохранить изменения вручную.