【发布时间】:2011-12-05 14:41:34
【问题描述】:
基本上,由于我无法控制的事件,我的远程仓库被移动了 - 同时我在本地副本上做了很多工作,现在我真的只想用我的本地文件覆盖远程仓库中的所有内容。
但是,我似乎无法做到这一点。我能得到的最接近的是拉和合并,但它想引导我完成一些复杂的合并过程。我不想合并。我想覆盖。我不需要新的分支 - 基本上,我只想要一个新的开始。
远程 repo 正在进行中。
【问题讨论】:
基本上,由于我无法控制的事件,我的远程仓库被移动了 - 同时我在本地副本上做了很多工作,现在我真的只想用我的本地文件覆盖远程仓库中的所有内容。
但是,我似乎无法做到这一点。我能得到的最接近的是拉和合并,但它想引导我完成一些复杂的合并过程。我不想合并。我想覆盖。我不需要新的分支 - 基本上,我只想要一个新的开始。
远程 repo 正在进行中。
【问题讨论】:
您可以删除分支并重新创建它,假设您要覆盖的分支是dev:
删除远程主机(github)中的分支
git push origin :dev
然后再次推送您的开发:
git push origin dev
我使用 Github 进行托管,不熟悉 unfuddle,但我认为它也适用于 unfuddle。 :)
正如@melee 提到的,你也可以使用
git push origin dev -f
(不确定-f是否有效,但--force可以)
git push origin dev --force
强制覆盖分支。我记得我以前做过。谢谢@melee。 :)
【讨论】:
git push origin dev -f 获得相同的结果
-f 和 --force 是同义词。
遇到同样的问题。这个命令对我有用。
git push --set-upstream origin master --force
【讨论】:
如何在不从远程仓库拉取数据的情况下为 master 分支执行此操作:
创建一个新文件夹,初始化 git,添加远程仓库 - 不要拉取或获取!
mkdir clean_repo
git init
git remote add origin <remote-repo>
创建(并切换到)空的本地分支,添加、提交并将测试文件推送到这里。
git checkout test
echo "test" > test
git add .
git commit -m "adding test"
git push origin:test
在 github/bitbucket 上,将默认分支更改为新分支
在本地,切换到主分支,提交并推送到远程仓库/分支
git checkout -b master
git push origin --mirror
【讨论】: