Git - 选择性分支

时间:2014-09-23 06:40:57

标签: git github version-control

我在github上有一个Git存储库,主分支中有文件file_1file_2。我需要另一个分支机构' selective'只有file_2。我做的是,我用checkout命令创建了一个新的分支。然后我删除了file_1并提交了。现在master分支有2个文件file_1file_2,而选择分支只有file_2。我可以专门进行更改并为两个分支提交file_2。我得到了我想要的东西。除非我选择性地与主人合并,否则没有任何问题。这是这样做的吗?或者还有其他更好的方法吗?

我的目标是希望我的客户端只访问我的代码库中的某些文件,即我的主分支。我只需要那些我希望客户端在另一个分支中访问的文件。

提前致谢

2 个答案:

答案 0 :(得分:10)

我会添加到该设置a:

git checkout selective
git merge -s ours master

这将记录selectivemaster之间的合并(同时保留selective更改,此处特别删除file1

这将确保从masterselective的下一次合并只会更新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