如何将您自己的个人 GitHub 仓库克隆 ('fork') 到单独的新分支中的新仓库?

How to clone ('fork') your own personal GitHub repo to a new repo in a separate, new branch?

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

如果我对该脚手架回购进行更改,我需要选择 merge/rebase 将它们添加到源自它的项目中。因此 GitHub 模板回购无法解决问题。

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

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

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

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

我明白 Git 是如何工作的,我知道我需要什么,但我只是很难设置这一切。如果您能指出我将如何做到这一点,我将不胜感激。

非常感谢!

如评论中所述,您混淆了术语。 repository/fork 无法“压缩”到单个分支中。不过,我认为你的解释足够清楚,可以回答你的问题。

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


设置 可能是这样的:

  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. 跟踪 origin 上的 main 分支(而不是 模板 ):

    git push -u origin main
    
  4. 模板仓库中设置跟踪远程分支的本地分支(仅在稍后使用update-option 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 或您首先集成和测试更改的另一个分支(推荐)。