Git - Селективное ветвление

У меня есть репозиторий Git в github с файлами file_1 и file_2 в главной ветке. Мне нужно иметь другую ветвь "selective" с только file_2 в ней. Я сделал это, я создал новую ветку с командой checkout. Затем я удалил file_1 и зафиксировал. Теперь главная ветвь имеет 2 файла, file_1 и file_2, а в селективной ветки есть file_2. Я могу специально внести изменения и зафиксировать file_2 для обеих ветвей. Я получил то, что хотел. Если я не объединю селективный с хозяином, нет никакой проблемы. Это способ сделать это? Или есть ли другой лучший способ доступа?

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

Заранее спасибо

Ответ 1

Я бы добавил к этой настройке:

git checkout selective
git merge -s ours master

Это будет записывать слияние между selective и master (при сохранении изменений selective, здесь, в частности, удаление file1)

Это гарантирует, что следующее слияние от master до selective будет обновляться только file2 и не будет восстанавливать file1 в выборочной ветки.

Ответ 2

Используйте код ниже:

$ git checkout -b selective_branch
$ git branch
master
* selective_branch

$ git checkout master -- file_2
$ git commit -m "Update file_2 from master"

$ # make changes in file2 in master branch
$ git checkout master
$ git branch
* master
selective_branch
$ git status -s
M file_2
$ git add file_2

$ git commit -m 'Added abc function in file_2'
$ git push origin master


$ # make changes in file2 in selective branch
$ git checkout selective_branch
$ git branch
master
* selective_branch
$ git status -s
M file_2
$ git add file_2

$ git commit -m 'Added abc function in file_2'
$ git push origin selective_branch


$ # Now merge the changes from selective_branch to master branch. Switch the branch to master
$ git checkout master
$ git branch
* master
selective_branch
$ git merge origin/selective_branch
$ # After Merge Master and selective_branch will point to same Commit ID
$ # After testing you can push the changes to the master branch
$ git push origin master