如何创建对a的本地更改git subtree,然后将这些更改推送到子树的repo中的分支,以便我可以创建一个pull请求以将来自该分支的更改合并到子树中master?
假设我有两个回购协议,project并且protocols,这两者都是我的控制之下.
第1步:在repo中添加protocols为asubtreeproject
$ git remote add protocols git@bitbucket.org:corp/protocols.git
$ git remote
origin
protocols
$ git subtree add --prefix=protocols protocols master --squash
...
From bitbucket.org:corp/protocols
* branch master -> FETCH_HEAD
* [new branch] master -> protocols/master
Added dir 'protocols'
Run Code Online (Sandbox Code Playgroud)
第2步:在projectrepo中protocols对子树中的文件进行一些更改
$ cd protocols
$ echo "foo" > some_file
$ git commit -a -m "added foo"
Run Code Online (Sandbox Code Playgroud)
步骤3:在protocolsrepo中创建一个分支,并将我的本地更改从project/protocols子树推送到该分支
??
我不确定如何最好地实现这一目标......
一旦我的subtree更改成功推送到远程protocols仓库中的分支,我就可以创建一个pull-request来将这些更改合并回protocols master.
问题:
我有一份本地副本protocols.我应该更改到该存储库,创建一个分支,然后更改回project并将subtree更改推送到我的本地存储protocols库?
我可以将subtree更改直接推送到本地 仓库中的新分支(尚未创建)protocols吗?
我可以将subtree更改直接推送到远程 仓库中的新分支(尚未创建)protocols吗?
这是推荐的工作流程吗?
在协议仓库中创建一个分支,并将我的本地更改从项目/协议子树推送到该分支
您可以使用单个命令实现此目的subtree push,指定新的远程分支:
$ git subtree push --prefix=protocols protocols feature
Run Code Online (Sandbox Code Playgroud)
这将feature在远程存储库中创建一个新分支protocols
您现在可以创建一个拉取请求,将feature分支合并回master协议分支.
将分支合并后,您可以使用pullwith 更新子树--squash
$ git subtree pull --prefix=protocols protocols master --squash
Run Code Online (Sandbox Code Playgroud)
这将创建另一个提交,将protocolsrepo 中的所有更改压缩为一个,然后合并提交以合并到您的projectrepo中
注意这个方法有一个小小的怪癖,那就是你的projectrepo中会有两个提交包含对repo的更改protocols.
projectrepo的protocols子树中做出的原始提交--squash已使用)| 归档时间: |
|
| 查看次数: |
2475 次 |
| 最近记录: |