我克隆了一个来自Git(Bitbucket)的现有仓库,并将该文件复制到一个新位置。现在我想把它推到一个空的存储库到Bitbucket作为一个新项目,其中包含与该项目相关的更改。发生了这种情况:
git remote add origin
fatal: remote origin already exists
之后我检查了git版本(使用$ git remote -v),它指示来自上一个项目的原始克隆git repo。有没有办法删除git历史记录,以便我可以执行git init并将项目推送到新的repo?如果我使用 rm -rf .git 会损害原来克隆的git repo吗?或者我可以初始化新项目并将其推送到新的空仓库吗?
答案 0 :(得分:2)
你得到这个
的原因
fatal: remote origin already exists
是因为origin
是远程存储库的本地版本。可以将其视为名为origin
的文件夹。
添加远程
时只需更改名称即可git remote add <name> <url>
您可以使用您喜欢的任何名称,只要它不违反文件系统 所适用的条件
或者,您可以删除remote
来源。
git remote rm origin
注意 :这将从您的文件系统中删除名为origin
的远程存储库的本地副本!
答案 1 :(得分: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
但是,这会清除fork基础的完整历史记录。我会考虑这种不好的风格,并且可能会与版权冲突,具体取决于使用许可证原始项目。为什么不考虑完整的分叉并做一些像:
$ cd original_repo
$ git remote add -f myfork <bitbucketurl>
$ git push myfork
完成此操作后,您可以从克隆中删除原始来源,也可以从bitbucket中重新克隆。这将保留原始历史。
答案 2 :(得分:0)
您可以简单地添加新的远程(git remote add new_origin destination
),或重命名实际的(git remote rename origin old_origin
),或删除实际的{git remote rm actual_destination
)。