1

我从 Git (Bitbucket) 克隆了一个现有的存储库并将该文件复制到一个新位置。现在我想将它作为一个新项目推送到 Bitbucket 的一个空存储库,其中包含与该项目相关的更改。这发生过:

git remote add origin
fatal: remote origin already exists

之后,我检查了 git 版本(使用 $ git remote -v),它表明来自上一个项目的原始克隆 git repo。有没有办法删除 git 历史记录,以便我可以执行 git init 并将项目推送到新的仓库?如果我使用rm -rf .git会损害原始克隆的 git repo 吗?或者我可以初始化新项目并将其推送到新的空仓库吗?

4

3 回答 3

2

描述

你得到这个的原因

fatal: remote origin already exists

是因为origin是远程存储库的本地版本。把它想象成一个有名字的文件夹origin

例子

添加遥控器时只需更改名称

git remote add <name> <url>

您可以使用任何您喜欢的名称,只要它不违反文件系统应用的条件

或者,您可以删除remote原点。

git remote rm origin

注意这将删除从您的文件系统命名的远程存储库的本地副本!origin

参考

git-remote

于 2016-08-11T08:17:59.793 回答
1

在 .git 中,您存储与 git 存储库的本地克隆相关的所有内容。在您的情况下,删除它并重新运行 git init 应该没问题。后。完成此操作后,您必须提交完整的文件夹...。所以你的命令可能看起来像(伪)

$ cd new_project
$ rm -rf .git
$ git init .
$ git add *
$ git commit -m "Initial commit of my fork"
$ git remote add … 
$ git push

但是,这将清除您的前叉基础的完整历史记录。我会考虑这种不好的风格,并且可能与版权冲突,具体取决于使用的许可证原始项目。为什么不考虑一个完整的分叉并执行以下操作:

$ cd original_repo
$ git remote add -f myfork <bitbucketurl>
$ git push myfork 

完成后,您可以从克隆中删除原始来源,也可以从 bitbucket 中重新克隆。这将保留原始历史。

于 2016-08-11T08:18:22.610 回答
0

您可以简单地添加一个新的遥控器 ( git remote add new_origin destination),或重命名实际的 ( git remote rename origin old_origin),或删除实际的 ( git remote rm actual_destination)。

于 2016-08-11T08:19:30.897 回答