将更改从 git 子树推送到分支以进行拉取请求
Push changes from git subtree to a branch for a pull request
如何创建对 git subtree
的本地更改,然后将这些更改推送到子树存储库中的一个分支,这样我就可以创建一个拉取请求,将该分支的更改合并到子树的 master
?
假设我有两个存储库,project
和 protocols
,它们都在我的控制之下。
第 1 步:将 protocols
作为 subtree
添加到 project
存储库
$ 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'
第 2 步:在 project
存储库中对 protocols
子树
中的文件进行一些更改
$ cd protocols
$ echo "foo" > some_file
$ git commit -a -m "added foo"
第 3 步:在 protocols
存储库中创建一个分支,并将我的本地更改从 project/protocols
子树推送到该分支
??
我不确定如何最好地实现这一目标...
一旦我的 subtree
更改已成功推送到远程 protocols
存储库中的一个分支,我就可以创建一个拉取请求以将这些更改合并回 protocols
master
.
问题:
我有 protocols
的本地副本。我是否应该更改到该存储库,创建一个分支,然后更改回 project
并将 subtree
更改推送到我的本地 protocols
存储库?
我可以将 subtree
更改 直接推送到我的 local[ 中的新分支 (尚未创建)吗=75=] protocols
回购?
我可以将 subtree
更改 直接推送到 远程 中的新分支 (尚未创建) protocols
回购?
这是推荐的工作流程吗?
create a branch in the protocols repo and push my local changes from project/protocols subtree to that branch
您可以通过一个命令 subtree push
来实现,指定一个新的远程分支:
$ git subtree push --prefix=protocols protocols feature
这将在远程存储库 protocols
中创建一个新分支 feature
您现在可以创建拉取请求以将 feature
分支合并回协议的 master
分支。
分支合并回来后,您可以使用 pull
和 --squash
更新您的子树
$ git subtree pull --prefix=protocols protocols master --squash
这将创建另一个提交,将 protocols
存储库中的所有更改压缩为一个,然后创建一个合并提交以合并到您的 project
存储库
请注意,此方法有一个小问题,那就是现在您的 project
存储库中将有两个提交,其中包含对 protocols
存储库的更改。
- 在
project
存储库的 protocols
子树中进行的原始提交
- 由后续子树拉取创建的提交(通常连同其他协议更改,假设使用
--squash
)
如何创建对 git subtree
的本地更改,然后将这些更改推送到子树存储库中的一个分支,这样我就可以创建一个拉取请求,将该分支的更改合并到子树的 master
?
假设我有两个存储库,project
和 protocols
,它们都在我的控制之下。
第 1 步:将 protocols
作为 subtree
添加到 project
存储库
$ 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'
第 2 步:在 project
存储库中对 protocols
子树
$ cd protocols
$ echo "foo" > some_file
$ git commit -a -m "added foo"
第 3 步:在 protocols
存储库中创建一个分支,并将我的本地更改从 project/protocols
子树推送到该分支
??
我不确定如何最好地实现这一目标...
一旦我的 subtree
更改已成功推送到远程 protocols
存储库中的一个分支,我就可以创建一个拉取请求以将这些更改合并回 protocols
master
.
问题:
我有
protocols
的本地副本。我是否应该更改到该存储库,创建一个分支,然后更改回project
并将subtree
更改推送到我的本地protocols
存储库?我可以将
subtree
更改 直接推送到我的 local[ 中的新分支 (尚未创建)吗=75=]protocols
回购?我可以将
subtree
更改 直接推送到 远程 中的新分支 (尚未创建)protocols
回购?这是推荐的工作流程吗?
create a branch in the protocols repo and push my local changes from project/protocols subtree to that branch
您可以通过一个命令 subtree push
来实现,指定一个新的远程分支:
$ git subtree push --prefix=protocols protocols feature
这将在远程存储库 protocols
feature
您现在可以创建拉取请求以将 feature
分支合并回协议的 master
分支。
分支合并回来后,您可以使用 pull
和 --squash
$ git subtree pull --prefix=protocols protocols master --squash
这将创建另一个提交,将 protocols
存储库中的所有更改压缩为一个,然后创建一个合并提交以合并到您的 project
存储库
请注意,此方法有一个小问题,那就是现在您的 project
存储库中将有两个提交,其中包含对 protocols
存储库的更改。
- 在
project
存储库的protocols
子树中进行的原始提交 - 由后续子树拉取创建的提交(通常连同其他协议更改,假设使用
--squash
)