如何选择使用本地提交覆盖远程存储库?

时间:2011-12-05 14:41:35

标签: git unfuddle

基本上,由于我无法控制的事件,我的远程仓库被移动了 - 在此期间我在本地副本上做了很多工作,现在我真的只想用我的本地文件覆盖远程仓库中的所有内容。 / p>

但是,我似乎无法做到这一点。我能得到的最接近的是拉和合并,但是它想要引导我完成一些复杂的合并过程。我不想合并。我想覆盖。我不需要新的分支 - 基本上,我只是想重新开始。

远程回购正在解决。

4 个答案:

答案 0 :(得分:50)

您可以删除分支并重新创建它,假设要覆盖的分支是dev

删除远程主机(github)中的分支

git push origin :dev  

然后再次推动你的开发者:

git push origin dev

我使用Github进行托管,不熟悉unfuddle,但我认为它也可以解决问题。 :)


就像@melee提到的那样,你也可以使用

git push origin dev -f

(不确定-f是否有效,但--force是否正常)

git push origin dev --force

强制覆盖分支。我记得我之前做过。谢谢@melee。 :)

答案 1 :(得分:4)

如何为master分支执行此操作,而不从远程仓库中删除数据:

  1. 创建一个新文件夹,init git,添加远程仓库 - 不要拉或取!

    mkdir clean_repo

    git init

    git remote add origin <remote-repo>

  2. 创建(并切换到)空本地分支,添加,提交并将测试文件推送到此。

    git checkout test

    echo "test" > test

    git add .

    git commit -m "adding test"

    git push origin:test

  3. 在github / bitbucket上,将默认分支更改为新分支

  4. 在本地,切换到主分支,提交并推送到远程仓库/分支

    git checkout -b master

    git push origin --mirror

答案 2 :(得分:0)

我不是github生态系统的专家,但为什么你不能只重置你的远程存储库网址?

git remote set-url origin /path/to/your/new/remote/repository/url

您可能还需要通过查看here来配置您的上游分支。

有关git remote...的更多信息,请查看here

答案 3 :(得分:0)

曾经遇到过同样的问题。这个命令对我有用。

git push --set-upstream origin master --force