如何解决如何将您自己的个人 GitHub 存储库克隆“分叉”到一个单独的新分支中的新存储库?
我有一个个人 GitHub 存储库,我想将其用作新项目 = 其他存储库的起点。这对你来说可能很容易,但我真的是一个初学者,所以我希望你能帮助我。
如果我对该脚手架存储库进行更改,我需要选择将它们合并/变基到源自它的项目中。因此,GitHub 模板存储库无法解决问题。
我正在考虑以下解决方案:
- 我有一个模板存储库
username/template-repo
- 创建一个空的存储库(手动或通过
git clone
) - 创建一个新的空分支
scaffold
(所以我们有main
&scaffold
) - 执行
git remote add
,以便scaffold
分支完全包含template-repo
的内容
- 将本地
scaffold
合并或变基到main
分支 - 在
main
分支中工作并进行提交。
如果我想获得 template-repo
的新内容,我会这样做:
- Git 将
template-repo
拉入scaffold
分支 - 将
scaffold
分支与main
分支合并或变基
我了解 Git 的工作原理并且我知道我需要什么,但是我很难设置这一切。如果您能指出我将如何执行此操作,我将不胜感激。
非常感谢!
解决方法
正如评论中已经指出的,您混淆了术语。存储库/分叉不能“压缩”到单个分支中。但是,我认为您的解释足够清楚,可以回答您的问题。
您可以配置多个遥控器,这似乎是一个很好的用例。它在某种程度上类似于在分叉另一个存储库时设置 upstream
存储库。您基本上拥有一个 upstream
存储库,而不是 template
。许多相同的概念都适用,因为 fork 应该从上游/模板存储库中获取更改。
设置可能是这样的:
-
克隆时,您为远程存储库指定名称 template 而不是 origin:
git clone -o template <repository> <directory> # example: git clone -o template https://.../username/template-repo.git project-dir
-
为项目本身添加远程仓库并推送所有分支:
git remote add origin https://.../username/project-repo.git git push origin --all
-
跟踪
main
上的origin
分支(而不是模板):git push -u origin main
-
在模板存储库中设置一个跟踪远程分支的本地分支(仅在以后使用更新选项B时才需要):
git branch --track scaffold template/main
-
可选地,覆盖模板存储库的推送 URL,这样您就不会意外地从您的项目存储库推送:
git remote set-url --push template do-not-push
使用模板存储库中的更改更新项目存储库[选项 A]:
-
获取模板存储库以进行最新更改:
git fetch template
-
将
template/main
的更改合并到当前分支*:git merge template/master
*请注意,当前分支可以直接是您项目的
main
分支或另一个分支,该分支将首先用于测试所有内容(推荐),然后稍后合并到main
中 – 也许带有拉取请求。
使用模板存储库中的更改更新项目存储库[选项 B]:
-
设置远程跟踪分支
scaffold
后(请参阅设置中的第 4 步),您可以检查它并提取更改:git checkout scaffold git pull
-
将
scaffold
合并到所需的分支中。这可以是main
或您首先集成和测试更改的其他分支(推荐)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。