gpt4 book ai didi

git - 将更改从 git 子树推送到分支以进行 pull 请求

转载 作者:太空狗 更新时间:2023-10-29 13:52:56 24 4
gpt4 key购买 nike

如何对 git subtree 创建本地更改然后将这些更改推送到子树存储库中的一个分支,这样我就可以创建一个 pull 请求,将该分支的更改 merge 到子树的 master 中。 ?

假设我有两个 repo 协议(protocol),projectprotocols ,两者都在我的控制之下。

第 1 步:添加 protocols作为subtreeproject repo

$ 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 中进行一些更改 repo 到 protocols 中的文件子树

$ cd protocols
$ echo "foo" > some_file
$ git commit -a -m "added foo"

第 3 步:在 protocols 中创建一个分支从 project/protocols repo 并推送我的本地更改该分支的子树

??

我不确定如何最好地实现这一目标......

曾经是我的subtree更改已成功推送到远程中的分支 protocols repo ,然后我可以创建一个 pull 请求将这些更改 merge 回 protocols master .

问题:

  • 我有一份 protocols 的本地副本.我是否应该更改到该存储库,创建一个分支,然后再更改回 project并按下 subtree更改为我的本地 protocols repo ?

  • 我可以推送 subtree 吗?在我的local protocols直接更改到一个新分支(尚未创建) repo ?

  • 我可以推送 subtree 吗? 直接更改到远程中的新分支(尚未创建)protocols repo ?

  • 这是推荐的工作流程吗?

最佳答案

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

您现在可以创建 pull 请求以将 feature 分支 merge 回协议(protocol)的 master 分支。

一旦分支被 merge 回来,您可以使用 pull--squash 更新您的子树

$ git subtree pull --prefix=protocols protocols master --squash

这将创建另一个提交,将 protocols 存储库中的所有更改压缩为一个,然后 merge 提交以 merge 到您的 project 存储库中

请注意,此方法有一个小问题,即现在您的 project 存储库中将有两个提交,其中包含对 protocols 存储库的更改。

  • project repo 的 protocols 子树中进行的原始提交
  • 由后续子树 pull 创建的提交(通常与其他协议(protocol)更改一起,假设使用了 --squash)

关于git - 将更改从 git 子树推送到分支以进行 pull 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40003831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com