Git在硬推送到远程后重置本地存储库

时间:2017-11-16 18:36:54

标签: git

我们有一个指向源git存储库的持续集成构建过程。当进程运行时,CI进程将其输出推送到发布存储库。我的问题围绕以下情况展开。

  1. 我们的CI服务器从源构建并将结果推送到我们的发布存储库。
  2. 开发人员签出版本存储库,添加架构更改脚本(我们的CI流程不会添加),然后修改先前的提交并执行强制推送操作(以便不添加其他提交只是添加脚本的结果)。
  3. 下次CI流程运行并尝试推送其输出时,我们会收到以下错误"更新被拒绝,因为当前分支的提示落后于其远程对应方。"
  4. 我想要做的是告诉CI服务器重置本地存储库与远程仓库完全匹配。我已经看过几个类似的问题,他们都说要运行以下命令(或非常相似)。

    1. git fetch --all
    2. git reset --hard [remote repository]
    3. 即使在构建过程之前运行这些命令之后,我仍然会遇到相同的错误。关于我应该做什么的任何想法?或者,如果我想做的事情甚至是可能的。

1 个答案:

答案 0 :(得分:2)

所以我似乎可能会重置错误的存储库。我已经更改了命令以执行以下操作(最后一步可能是不必要的)

git fetch --all 
git reset --hard @{u}
git pull

@{u}告诉git重置当前检出的任何分支,从而无需手动指定分支(我一定做错了)。

另一项感兴趣的项目。如果您在power shell脚本中运行命令(我们的CI服务器如何运行这些操作),您必须按如下方式编写git reset(因为花括号会导致解析错误)。

git reset --hard "@{u}"