使git克隆自己的存储库

问题描述:

这个问题可能已经被问到,但搜索后我找不到我在找什么。使git克隆自己的存储库

我创建了一个项目,并把它推到github前一段时间,然后决定将它用作新项目的一种锅炉板。所以我克隆到我的桌面,然后完全重新设计它。项目结束后,我决定在github上创建自己的回购并尝试推出它。然而,这在我重新设计的项目恢复到原始状态时结束了。我可以通过在我的所有文件(LOL)上按CTRL Z来更正此问题。 我需要找到一种方法来完全分开项目。当我尝试将原始文件推送到git集线器时,出现以下错误:

“更新被拒绝是因为远程包含您本地没有的工作,通常是由另一个存储库将 推向相同ref。在再次推送之前,您可能需要先集成远程更改 (例如'git pull ...')。“

为了澄清,我不想将两个项目合并在一起,或者最终删除其中一个。如果有可能,我想找到一种方法使自己的克隆项目,然后纠正上述原始项目的错误。

假设您的样板为[email protected]:foo/boilerplate.git,并且您希望这是您的新项目[email protected]:foo/project.git的基础。

在github网站上,创建一个名为project的空存储库。

将您的样板回购克隆到一个名为project的新目录中。

git clone [email protected]:foo/boilerplate.git project 

Git记住远程地址,所以它可以从那里默认推/拉。但你不想这样做:相反,从现在开始,你想git push推到github上的project.git回购,而不是boilerplate.git回购。 git remote set-url是您如何告诉git project.git是您的新来源(,默认的推拉遥控器)。

cd project 
git remote set-url origin [email protected]:foo/project.git 

现在,git push会推到project.git回购。

可以选择添加样板作为一个单独的遥控器(但不是origin,这样你就不会意外使用它):

git remote add boilerplate [email protected]:foo/boilerplate.git 

现在,当您更新的样板,您可以合并这些变化到你的项目也是如此。 (这可以很好地工作,如果样板文件往往不会发生很大的变化在project回购。)

git pull boilerplate master 

要回滚boilerplate.git回购到您它发散点,你只需要push -f 。方法有两种:

  1. 如果您还有从你无意中按下东西github上之前样板回购的本地副本,刚回到那里并运行git push -f。这会从github上的样板库回收中删除“你本地没有的工作” - 但你现在已经在单独的回购中获得了这些东西,对吧? (在做git push -f之前你应该至少考虑两次,Git试图帮助你避免意外删除东西,不要意外删除东西!)

  2. 克隆模板。使用git log来查找您希望保留的提交,例如abc1234。通过运行git push -f origin abc1234:master将github repo的“主”分支重置回该提交。

要查看原点指向哪里(以及您有哪些其他遥控器),请运行git remote -v

+0

这很完美。谢谢。 – 2015-02-16 21:47:29