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