0

我正在尝试推动本地更改:

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”不起作用,抛出同样的错误

请帮忙!提前致谢!

4

2 回答 2

1

好吧,这很有意义。您网络上的遥控器不是裸露的。即,你在它上面工作;它有自己的工作目录。实际上,您尝试推送到的分支当前已签出。要补充的是,您还有一些尚未提交的修改。Git 将拒绝在那里删除您的更改。

正确的工作流程是从远程那里提取更改。

但是,您也可以

  • 通过在远程 repo 上签出特定的提交而不是分支来进入无头状态。
  • 如果它确实是其他人将要使用它的中央存储库,或者 CI 服务器将查询它,则将其设为一个裸存储库。这是用git clone --bare.
于 2012-05-30T20:03:57.210 回答
0

请参阅push的手册页。

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

如果省略它和冒号,则语法是隐含git push remote-name branch-name:remote-branch-name的。remote-branch-name

然后,您将使用--allpush 命令的选项来推送到 github 和网络远程。

git push --all

在您为要推送到的所有地方设置单独的遥控器后,这将是有意义的。

于 2012-05-30T19:19:29.063 回答