微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将您自己的个人 GitHub 存储库克隆“分叉”到一个单独的新分支中的新存储库?

如何解决如何将您自己的个人 GitHub 存储库克隆“分叉”到一个单独的新分支中的新存储库?

我有一个个人 GitHub 存储库,我想将其用作新项目 = 其他存储库的起点。这对你来说可能很容易,但我真的是一个初学者,所以我希望你能帮助我。

如果我对该脚手架存储库进行更改,我需要选择将它们合并/变基到源自它的项目中。因此,GitHub 模板存储库无法解决问题。

我正在考虑以下解决方案:

  1. 我有一个模板存储库 username/template-repo
  2. 创建一个空的存储库(手动或通过 git clone
  3. 创建一个新的空分支 scaffold(所以我们有 main & scaffold
  4. 执行 git remote add,以便 scaffold 分支完全包含 template-repo
  5. 内容
  6. 将本地 scaffold 合并或变基到 main 分支
  7. main 分支中工作并进行提交。

如果我想获得 template-repo 的新内容,我会这样做:

  1. Git 将 template-repo 拉入 scaffold 分支
  2. scaffold 分支与 main 分支合并或变基

我了解 Git 的工作原理并且我知道我需要什么,但是我很难设置这一切。如果您能指出我将如何执行此操作,我将不胜感激。

非常感谢!

解决方法

正如评论中已经指出的,您混淆了术语。存储库/分叉不能“压缩”到单个分支中。但是,我认为您的解释足够清楚,可以回答您的问题。

您可以配置多个遥控器,这似乎是一个很好的用例。它在某种程度上类似于在分叉另一个存储库时设置 upstream 存储库。您基本上拥有一个 upstream 存储库,而不是 template。许多相同的概念都适用,因为 fork 应该从上游/模板存储库中获取更改。


设置可能是这样的:

  1. 克隆时,您为远程存储库指定名称 template 而不是 origin

    git clone -o template <repository> <directory>
    # example: git clone -o template https://.../username/template-repo.git project-dir
    
  2. 为项目本身添加远程仓库并推送所有分支:

    git remote add origin https://.../username/project-repo.git
    git push origin --all
    
  3. 跟踪 main 上的 origin 分支(而不是模板):

    git push -u origin main
    
  4. 模板存储库中设置一个跟踪远程分支的本地分支(仅在以后使用更新选项B时才需要):

    git branch --track scaffold template/main
    
  5. 可选地,覆盖模板存储库的推送 URL,这样您就不会意外地从您的项目存储库推送:

    git remote set-url --push template do-not-push
    

使用模板存储库中的更改更新项目存储库[选项 A]

  1. 获取模板存储库以进行最新更改:

    git fetch template
    
  2. template/main 的更改合并到当前分支*:

    git merge template/master
    

    *请注意,当前分支可以直接是您项目的 main 分支或另一个分支,该分支将首先用于测试所有内容(推荐),然后稍后合并到 main 中 – 也许带有拉取请求。


使用模板存储库中的更改更新项目存储库[选项 B]

  1. 设置远程跟踪分支 scaffold 后(请参阅设置中的第 4 步),您可以检查它并提取更改:

    git checkout scaffold
    git pull
    
  2. scaffold 合并到所需的分支中。这可以是 main 或您首先集成和测试更改的其他分支(推荐)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。