Слияние только дельта изменений в ветке git - PullRequest
0 голосов
/ 13 апреля 2019

У нас есть 2 ветки git - master и dev. Мастер содержит файлы для развертывания в рабочей среде, а dev содержит только файлы, которые необходимо изменить.

В любой момент времени в ветке master guy будет более 10 файлов, а в качестве dev будет только 1.

Теперь проблема в том, что если мы объединяем master из dev, он удаляет все файлы и сохраняет только 1 файл, который доступен в ветви dev.

Нам нужно отсоединить все файлы от мастера и обновить только 1 файл от dev (аналогично rsync)

есть идеи, как мы можем реализовать дельта-слияние в git?

Ответы [ 2 ]

1 голос
/ 13 апреля 2019

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

Когда вы хотите применить коммиты от dev до master,Вы можете использовать git cherry-pick ${commit_from_dev}.

. Если вы намереваетесь использовать git merge, с самого начала вы должны были создать dev как сиротскую ветвь.Другими словами, dev не должен делиться историей с master при его создании.

# at the point of creating dev
git checkout --orphan dev master
git rm ${unwanted_files}
git commit -m 'init dev'

# the first time to merge dev
git checkout master
git merge dev --allow-unrelated-histories
0 голосов
/ 13 апреля 2019

Создайте новую ветку из локальной master, затем извлеките файл в dev ветку

$ git checkout master    # checkout master
$ git checkout -b dev2   # checkout new branch called 'dev2' with master history

$ git checkout dev -- <file-path> # checkout/update the file from 'dev' branch

Теперь в dev2 ветке у вас есть

отсоедините все файлы от мастера и обновите только 1 файл от разработчика

...