gpt4 book ai didi

git - 在不将存储库克隆到 Github 的情况下将补丁提交到 Github 项目?

转载 作者:IT王子 更新时间:2023-10-29 01:17:27 26 4
gpt4 key购买 nike

我有一个本地存储库,它是 Github 上存储库的完整副本。我做了一个更改,我想为原始项目做出贡献。

如何在不重新加载 Github 上的项目的情况下执行此操作?我不认为打开一个问题是正确的方式..

我在 How can I contribute a patch to github? 中看到我应该 fork 项目,但由于我的本地存储库“链接”到原始 Github 存储库,我不想把它搞砸。

因此,如果真的不鼓励以除 fork 之外的任何方式共享补丁,我如何才能简单地 fork 原始项目, merge 我的更改,然后与原始存储库共享它们?

如果我在“提交”更改但尚未接受更改后删除 fork ,我的提交是否会消失?

最佳答案

你应该 fork 这个项目,是的。但是,这并不意味着您需要在本地再次克隆所有内容

说明:查看 git 存储库的一种简单方法是提交图(它是有向的和非循环的,但与本次讨论无关);该图的所有节点,即提交,在世界上所有 git 存储库中都有一个唯一的标识符。至于分支,它们只是对提交的符号引用(在 git 的说法中,分支——或标记——称为 refspec)。

此外,您绝不会以任何方式链接到远程存储库。您真正“链接到”的唯一东西是提交图。一个远程存储库恰好有一组 refspecs(分支、标签)……指向一个提交图,它们也有——没有人喜欢悬挂引用。当您克隆存储库时,您将获得提交图(和关联的树)和一组引用规范(即分支、标签)。 refspec 指向一棵树。仅此而已。

这意味着:

  • 您有原始的 github 存储库:提交图和相关树,一组 refspecs;
  • 您已经在本地克隆了它:相同的提交图和相关树,相同的引用规范集;
  • 您已在本地提交内容:您已在此图和关联的树上添加内容,并添加了一组新的 refspecs。

好的,现在执行以下操作:

  • 在 github 上克隆原始仓库:与原始仓库相同的提交和 TreeMap ; refspecs 在这里,只是以远程名称开头,默认情况下是 origin。现在怎么办?
  • 在您的本地存储库中,添加您的分支作为远程
  • 推送到那个分支(这将推送 refspecs 和树);
  • 提交 pull 请求。

将您的 fork 添加为 Remote 就像“简单”一样:

git remote add myfork git@github.com:youruser/theproject

将您的 refspec(分支)推送给它:

git push myfork mybranch

然后向原作者提交pull request。

应该注意的是,理论上,您可以将远程添加到与“原始”存储库完全无关的 git 存储库:这只是两个提交图与一个完全不相交另一个——但是,这种用例很少见

关于git - 在不将存储库克隆到 Github 的情况下将补丁提交到 Github 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8865545/

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