代码之家  ›  专栏  ›  技术社区  ›  Sahand

如何将远程分支重置为旧提交

git
  •  0
  • Sahand  · 技术社区  · 5 年前

    enter image description here

    我做的 git branch -f origin/start-defblock-on-long-hyphen 37fba70e 本地,现在我的日志如下所示:

    commit 37fba70ef7db1ce244d6e0c0d4e3b42d95dd7cb0 (HEAD -> origin/start-defblock-on-long-hyphen)
    Author: First Last <first.last@company.com>
    Date:   Thu Apr 11 13:28:51 2019 +0200
    
        added ')].' to valid end
    
    commit 30fa3879845184405aba590b85380a6793ed5051
    Author: First Last <first.last@company.com>
    Date:   Wed Apr 10 16:02:31 2019 +0200
    
        accept to start def on moment start if start element is long dash
    
    commit 57157406ab149b2934bfb2db7e6a6021bf950e02
    Author: First Last <first.last@company.com>
    Date:   Wed Apr 10 15:42:06 2019 +0200
    
        added long dash to valid start
    

    这看起来是正确的,所以我想将这些更改推送到bitbucket,但是 git push origin start-defblock-on-long-hyphen

    Everything up-to-date
    

    Bitbucket提交历史记录看起来与以前相同。

    我怎样才能实现我想要的?

    0 回复  |  直到 5 年前
        1
  •  2
  •   torek    5 年前

    你跑:

    git branch -f origin/start-defblock-on-long-hyphen 37fba70e
    

    这是个错误!这创造了一个 地方的 名为 origin/start-defblock-on-long-hyphen .这种情况(对每个人)都很混乱,因为名字通常以 origin/ 为您自己的远程跟踪名称保留。

    你的 git log 现在,输出从以下内容开始:

    commit 37fba70ef7db1ce244d6e0c0d4e3b42d95dd7cb0 (HEAD -> origin/start-defblock-on-long-hyphen)
    

    这意味着你也跑了 git checkout origin/start-defblock-on-long-hyphen ,它现在是您当前的分支。

    要解决这个问题,您可能应该首先 改名

    git branch -m origin/start-defblock-on-long-hyphen start-defblock-on-long-hyphen
    

    我希望这会失败,因为我相信你 而且 有一个 名为 start-defblock-on-long-hyphen 。如有,你可以:

    • 删除该分支,然后重命名该分支;或
    • 签出该分支,强制它执行所需的提交,然后删除 起源/ 完全是本地名称。

    安全的 首先重命名本地的,然后重命名 起源/ -命名为本地一个:

    git branch -m start-defblock-on-long-hyphen old-start-defblock-on-long-hyphen
    git branch -m origin/start-defblock-on-long-hyphen start-defblock-on-long-hyphen
    

    (请注意,如果您已经有一个名为 在长连字符上启动defblock ,您有一个单独的问题)。完成后,您可以重复以下步骤:

    git push origin start-defblock-on-long-hyphen
    

    因为您必须使用 --force 或相当于在该操作i的接收端上命令Git。e、 ,BitBuckett上的Git将丢失所有额外的提交,但是如果这是目标,并且此Bitbucket Git的任何其他用户都同意可以丢失它们,那么继续使用 --强迫 。您也可以使用 -u --set-upstream

    git push --force -u origin start-defblock-on-long-hyphen