gpt4 book ai didi

git - 修改 Github 上的旧版本以推出补丁

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

假设我有各种标签/版本,1.0、1.0.1、1.0.2、1.0.3。 Master 分支目前处于最前沿,正在为 1.1.0 做准备。

我现在意识到我需要推送一个小补丁,1.0.4。

基于 1.0.3 制作补丁的最佳方法是什么,将其推送到 github,将其标记为 1.0.4,但仍然保持 master 分支处于最前沿并为 1.1.0 做准备?

编辑:有问题的存储库(注意,它实际上是 v1.0.5 -> v1.0.6):https://github.com/brashrebel/render

最佳答案

我会说你有两种可能性:一种是将 1.0.4 作为悬空提交保留在它自己的分支中,另一种是将你以后的所有提交 rebase 到那个新分支之上,然后丢弃它。

第一个意思是:

$ git checkout v1.0.3
$ git checkout -b patch-for-1.0.4
# ... edit files ...
$ git commit -a -m 'Patch for 1.0.4'
$ git tag v1.0.4

在此之后,您的标签 v1.0.4 不在 master 分支中,但可以在 repo 中找到它,您可以从中发布。您只需要注意不要删除分支 patch-for-1.0.4

第二个意思是做前面提到的,然后继续:

$ git checkout master
$ git rebase patch-for-1.0.4
# ... solve conflicts ...
$ git branch -d patch-for-1.0.4

这假设所有从 1.0.3 到 1.1.0 的提交都是在 master 上完成的。如果您预计会有很多冲突,您可能想先在一个分支上进行测试,或者做一个 --interactive rebase。

第二种选择更简洁,您可以删除 patch-for-v1.0.4 分支;但这需要在新提交的基础上重新设置旧提交,并不是每个人都愿意这样做,尤其是当您在团队中工作时。

编辑:

这是您的起始情况:

A -------- B - C - D  ( ... will become v1.1.0)
(v1.0.3)

第一个片段创建了一个补丁并将其作为悬空提交留在自己的分支中:

A -------- B - C - D
\
--- E
(v1.0.4)

如果此时进行 merge ,您将得到:

A --------- B - C - D --------- E
(v1.0.3) (v1.1.0) (v1.0.4)

为了避免 E 被放在 B - C - D 提交之上,做一个 rebase :

A --------- E ------- B' - C' - D'
(v.1.0.3) (v1.0.4) (v1.1.0)

请注意,此更改将 B - C - D 提交到 B' - C' - D',它们具有相同的内容(冲突修复除外),但不同的散列,因为它们现在位于 E 之上,而不是 A。这可能会破坏您团队中其他人的 master 分支,或他们的功能分支,但会按逻辑顺序保留内容。

关于git - 修改 Github 上的旧版本以推出补丁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29078569/

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