我在github上有一个Git存储库,主分支中有文件file_1
和file_2
。我需要另一个分支机构' selective'只有file_2
。我做的是,我用checkout命令创建了一个新的分支。然后我删除了file_1
并提交了。现在master分支有2个文件file_1
和file_2
,而选择分支只有file_2
。我可以专门进行更改并为两个分支提交file_2
。我得到了我想要的东西。除非我选择性地与主人合并,否则没有任何问题。这是这样做的吗?或者还有其他更好的方法吗?
我的目标是希望我的客户端只访问我的代码库中的某些文件,即我的主分支。我只需要那些我希望客户端在另一个分支中访问的文件。
提前致谢
答案 0 :(得分:10)
我会添加到该设置a:
git checkout selective
git merge -s ours master
这将记录selective
和master
之间的合并(同时保留selective
更改,此处特别删除file1
)
这将确保从master
到selective
的下一次合并只会更新file2
,并且不会在选择性分支中恢复file1
。
答案 1 :(得分:0)
使用以下代码:
$ 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