在现有的代码库中添加Github分支

28
我按照给定的说明(http://octopress.org/docs/setup/)设置了一个Octopress项目,该说明让你创建一个Github仓库,并在本地机器上创建一个本地仓库。在本地机器上,您将向原始Octopress仓库添加一个远程仓库,然后发出“git pull”命令。之后,您需要添加一个远程仓库到您的Github仓库,以便将更改推送到您的仓库。
就目前而言,所有这些都可以正常工作,但它并没有创建原始项目的分支,这意味着对于新手而言没有明显的方法来向原始Octopress仓库请求提交请求。
我是否可以在Github上将原始Octopress存储库的分支添加到我的存储库实例中?
如果不能,请问我能否安全地删除我的Octopress Github实例,fork原始版本,并从我的本地存储库向新fork的Octopress添加一个新的远程仓库?
3个回答

22

尽管人们倾向于将其在Github上的存储库视为"官方"存储库,但请记住,这是一种社交区别而不是技术区别。从git的角度来看,每个存储库都处于平等地位。这意味着只要您将每个提交拉入本地存储库中,就可以安全地删除Github上的存储库。然后只需在github上fork Octopress项目,在本地存储库上设置它作为远程仓库,然后推送即可。Git并不在乎您最初从哪个存储库获取了任何给定的提交。它"只是工作"。


6
以下是我所遵循的步骤:(1) 删除了 Github 仓库,(2) fork 了 Octopress,(3) 移除了将本地仓库与现在已删除仓库联系在一起的远程连接,(4) 添加了一个新的远程连接("origin")到新 fork 的 Octopress 仓库中,(5) 执行了 git pull origin master 命令来解决 "! [rejected] master -> master (non-fast-forward)" 错误,(6) 解决了因为还未拉取 Octopress 更新而导致的少量合并冲突,(7) 重新生成网站以验证其正常工作,最后,(8) 将本地仓库推送回 Github。 - Mark Nichols

10

我不知道在事后将您的空白 Github 副本转换为 Github 分支的任何方法,因此

如果没有方法,那么我可以安全地删除我的 Octopress Github 实例,fork 在 Github 上的原始版本,然后从我的本地存储库向新 fork 的 Octopress 添加一个新的远程吗?

这就是解决方法。删除您自己的 Github 存储库,在 Octopress 存储库上点击 fork 按钮,并将您的 fork 克隆到您的本地计算机。

如果您已经进行了任何需要保留的更改,我建议使用git format-patch 将它们存储为一系列补丁文件,然后使用 git apply-patch 将其应用于新存储库的克隆,这比在您的本地机器上使用旧存储库作为远程更容易。


1
如果我理解正确的话,他们有一个Git存储库,并且现在决定应该分叉另一个存储库。他们希望将其变成一个分支,而不会打扰使用该存储库的团队,需要他们针对新存储库进行操作。
我考虑过将新存储库重命名为原来的位置。因此,如果团队当前克隆、提取和拉取example.git
  1. 设置一个新的存储库作为分支,example_fork.git
  2. 将example.git重命名为example_deprecated.git
  3. 快速将example_fork.git重命名为example.git。
我听说任何已经克隆的人都会遇到某种错误(所以这并没有像我希望的那样避免不便)
我还看到建议使用强制推送:在事后将存储库标记为GitHub中的分支

.

但现在我在想,讨论的主题是否更准确地被称为“设置现有存储库的上游远程”。 在这里讨论: 在bit bucket上为git repo添加远程上游 根据这里提供的反馈:“git remote add upstream”有何作用? 我认为它基本上允许像我想要的那样进行追溯分支,就像我认为OP正在询问的那样。
我还没有尝试过。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接