git push --force到远程服务器失败

时间:2012-05-30 19:15:50

标签: git github

我正试图推动本地变化:

git push all

“all”表示在github和远程服务器上的repo - 在我的.git / config中:

[remote "all"]
    url = git@github.com:...myrepo.git
    url = ssh://usrname@servername/myrepo.git/

最初假设不应该在服务器上手动更改任何内容,但最终确实发生了。但是服务器上的更改是非实质性的,我想覆盖它们以获得我本地仓库的精确副本。所以,现在我无法推送到远程服务器获取错误:

remote: error: Your local changes to the following files would be overwritten by merge:
remote: Please, commit your changes or stash them before you can merge.

我知道以前类似问题的答案,但不幸的是“git push origin --force all”不起作用,抛出同样的错误

请帮忙!提前谢谢!

2 个答案:

答案 0 :(得分:1)

好吧,那就完全合情合理了。您的网络上的遥控器不是裸露的。即,你在做它;它有自己的工作目录。实际上,您要尝试推送的分支目前已经过检出。要添加,您还有一些尚未提交的修改。 Git会拒绝在那里改变你的变化。

正确的工作流程是从遥控器上拉出更改。

但是,你也可以

  • 通过检查远程仓库上的特定提交而不是分支来达到无头状态。
  • 使它成为一个裸存储库,如果它真正是一个中心存储库,其他人将使用它或CI服务器将查询它。这是通过git clone --bare完成的。

答案 1 :(得分:0)

请参阅push的手册页。

您不能拥有一个遥控器代表的多个repos。将“github”和“network”添加为单独的遥控器。在您的最后一个推送示例中,“all”被视为分支名称!。

语法为git push remote-name branch-name:remote-branch-name,如果省略{和}冒号,则隐含remote-branch-name

然后,您将使用push命令的--all选项推送到github和网络遥控器。

git push --all
在为要推送的所有地点设置单独的遥控器后,

会有意义。