这个问题可能已被提出,但在搜索后我无法找到我要找的东西。
我刚刚创建了一个项目并将其推送到github,然后决定将其用作新项目的一种锅炉板。所以我将它克隆到我的桌面,然后完全重新设计它。项目完成后,我决定在github上创建自己的repo并尝试将其推上去。然而,这最终在我重新设计的项目中恢复到原来的状态。我能够通过在我的所有文件(LOL)上按CTRL Z来纠正这个问题。 我需要找到一种方法来完全分离项目。当我尝试将原始文件推送到git hub时,我收到以下错误:
“更新被拒绝,因为远程包含您本地没有的工作。这通常是由另一个存储库推送造成的 同样的参考。您可能希望首先集成远程更改 (例如,'git pull ...')再推一次。“
为了澄清,我不想将两个项目合并或拉到一起,或者最终删除其中一个项目。如果有可能,我想找到一种方法使克隆项目成为自己的,然后纠正上述原始项目的错误。
答案 0 :(得分:5)
假设您的样板位于git@github.com:foo/boilerplate.git
,并且您希望它成为新项目git@github.com:foo/project.git
的基础。
在github网站上,创建一个名为project
的空存储库。
将样板仓库克隆到名为project
的新目录。
git clone git@github.com: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 git@github.com:foo/project.git
现在,git push
将推送到project.git
回购。
(可选)将样板添加为单独的遥控器(但不是origin
,因此您不会意外使用它):
git remote add boilerplate git@github.com:foo/boilerplate.git
现在,当您更新样板时,您也可以将这些更改合并到项目中。 (如果样板文件在project
仓库中不会发生太大变化,这可以很好地工作。)
git pull boilerplate master
要将boilerplate.git
个回购卷回滚到想要它发散的位置,您只需要push -f
。两种方式:
如果您在意外将内容推送到github之前仍然拥有样板代理的本地副本,请返回并运行git push -f
。这将删除您在本地没有的工作"来自github上的样板回购 - 但你现在已经把这些东西放在一个单独的回购中,对吗? (在git push -f
之前你应该至少考虑两次.Git试图帮助你避免意外删除内容。不要故意删除内容!)
克隆样板。使用git log
查找您希望离开的提交,例如abc1234
。重置github repo" master"通过运行git push -f origin abc1234:master
分支回该提交。
要查看原点所指向的位置(以及您拥有的其他遥控器),请运行git remote -v
。