Git Merge по типу файла - PullRequest
       7

Git Merge по типу файла

0 голосов
/ 07 ноября 2018

У меня есть две ветки git, master и mybranch. Mybranch имеет все правильные файлы * .json, а master имеет все остальные типы файлов. Как мне их объединить?

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

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

git checkout имеет опции --ours и --theirs для получения соответствующих версий во время слияния. Таким образом, вы делаете что-то вроде

git checkout master
git merge mybranch
git checkout --theirs -- *.json
git checkout --ours -- <the-other-files>
git add .
git commit

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

Помните, --ours - это ветвь, которую вы передали в качестве аргумента начальному checkout, а --theirs - это ветвь, который вы передали в качестве аргумента merge.

Кроме того, перед тем, как позвонить add, вы можете передумать с помощью --ours и --theirs, потому что индекс по-прежнему содержит все версии. Таким образом, вы должны быть в состоянии сделать git checkout --ours -- ., а затем git checkout --theirs *.json.

0 голосов
/ 07 ноября 2018

Если вы хотите объединить Mybranch в мастер, общий совет будет:

git checkout master
git merge Mybranch 

Если есть конфликты слияния - разрешите их.

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

UPD: Самым быстрым решением будет использование diff patch:

  1. Оформить заказ на главную ветку.

  2. Создание патча diff только для файлов JSON.

    git diff master Mybranch *.json > json.diff

  3. Применить дифференциал.

    git apply json.diff

  4. Передать изменения.

Примечания : Если в рабочем каталоге есть конфликты - патч не будет применяться. Может быть полезно сделать для нескольких или каждого JSON свой собственный diff для локализации проблемного файла json. Для противоречивого сравнения вы можете открыть файл сравнения и отредактировать его перед применением. В любом случае - если есть конфликты, вы должны их решить.

...