使用 git 修补分叉存储库

发布于 2024-10-19 20:55:15 字数 75 浏览 6 评论 0原文

比如说,我有某个库版本的分支。 1.1 git下。然后是一个新的 tar-ball 版本。 1.2出来了。如何将我的分叉库更新到新版本?

Say, I have a fork of some library ver. 1.1 under git. Then a new tar-ball ver. 1.2 comes out. How can I update my forked library to a new version?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

春花秋月 2024-10-26 20:55:15

你的问题不太好,但我会提供一个可能的解决方案。

让我们假设该库的代码库如下所示:

vendor  a -- b

您在 b 上分叉,这是 1.1 版本。

vendor  a -- b
              \
               \
you             1 -- 2 -- 3

现在假设开发在 vendor 树上继续进行。

vendor  a -- b -- c -- d
              \
               \
you (master)    1 -- 2 -- 3

d 成为他们的 1.2 版本。如果 vendor 树位于 git 存储库中并且您可以访问它,则可以使用 git pull 或来自vendor 树应该可以完成您需要的大部分操作,您可能需要解决一些冲突等。但是,如果 vendor 树不在 git 中,并且您拥有源代码的唯一访问权限代码是每个版本的 tarball,那么可能需要稍微复杂的东西。

因此,我将在您分叉的位置创建第二个分支,方法是:

$ git checkout -b v1.2 b

然后将 v1.2 tarbar 解压到此分支并提交更改。您现在应该有这样的内容:

vendor  a -- b -- c -- d
             |\
             | \
you (master) |  1 -- 2 -- 3
              \
(v1.2 branch)  x

现在,您可以使用以下命令合并分支 v1.2 中的更改:

$ git checkout master
$ git merge v1.2

或者您可以使用以下命令在 v1.2 之上重新调整您的更改:

$ git rebase v1.2

这将为您提供:

vendor  a -- b -- c -- d
              \
               \
you (master)    x -- d -- 1 -- 2 -- 3

我不是专家,所以我如果我犯了一些错误,我确信人们会发表评论(请这样做,然后我会添加更正)。

You question isn't great, but I'll offer a potential solution.

Lets assume the code base for the library looks like this:

vendor  a -- b

you fork at b which is the 1.1 release.

vendor  a -- b
              \
               \
you             1 -- 2 -- 3

Now assuming development continues on the vendor tree.

vendor  a -- b -- c -- d
              \
               \
you (master)    1 -- 2 -- 3

and d becomes their 1.2 release. If the vendor tree is in a git repo and you can access it, then a git pull or maybe a git pull --rebase from the vendor tree should do most things you need, you may need to resolve some conflicts etc. However if the vendor tree is not in git, and the only access you have the source code is tarballs of each release then something slightly more complicated might be required.

So I would create a second branch at the point at which you forked, by doing:

$ git checkout -b v1.2 b

Then untar you v1.2 tarbar into this branch and commit the changes. You should now have something like this:

vendor  a -- b -- c -- d
             |\
             | \
you (master) |  1 -- 2 -- 3
              \
(v1.2 branch)  x

Now, either you can merge the changes from branch v1.2 using:

$ git checkout master
$ git merge v1.2

Or you can rebase your changes on top of v1.2 using:

$ git rebase v1.2

Which will give you:

vendor  a -- b -- c -- d
              \
               \
you (master)    x -- d -- 1 -- 2 -- 3

I'm no expert, so I'm sure people will comment if I've made some mistakes (please do, then I'll add corrections).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文