簡體   English   中英

將更改從git子樹推送到分支以獲取拉取請求

[英]Push changes from git subtree to a branch for a pull request

如何創建對git subtree本地更改,然后將這些更改推送到子樹的repo中的分支,以便我可以創建一個pull請求,將該分支的更改合並到子樹的master

假設我有兩個回購, projectprotocols ,這兩個都在我的控制之下。

步驟1:在project倉庫中添加protocols作為subtree

$ 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更改直接送到我的本地 protocols倉庫中的新分支 (尚未創建)嗎?

  • 我可以將subtree更改直接送到 遠程 protocols倉庫中的新分支 (尚未創建)嗎?

  • 這是推薦的工作流程嗎?

在協議倉庫中創建一個分支,並將我的本地更改從項目/協議子樹推送到該分支

您可以使用單個命令, subtree push ,指定新的遠程分支來實現:

$ git subtree push --prefix=protocols protocols feature

這將在遠程存儲庫protocols創建一個新的分支feature

您現在可以創建一個拉取請求,將feature分支合並回協議的master分支。

將分支合並回來后,您可以使用--squashpull來更新子樹

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

這將創建另一個提交, protocols repo中的所有更改壓縮為一個,然后合並提交合並到您的project倉庫

注意這個方法有一個小小的怪癖,那就是你的project倉庫中會有兩個提交,其中包含對protocols倉庫的更改。

  • project repo的protocols子樹中進行的原始提交
  • 由后續子樹拉動創建的提交(通常與其他協議更改一起使用,假設使用了--squash

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM