【问题标题】:Undo git push to Assembla撤消 git push 到 Assembla
【发布时间】:2012-10-31 22:07:51
【问题描述】:

所以 - 今天我想做一件好事并重新排列我的存储库中的文件。提交并推送到我的Assembla 存储库。

由于我没有使用 git 移动命令,所有文件都丢失了历史记录。我意识到自己的错误,并想摆脱不必要的改变,这样我就可以在之后做出正确的举动。 我尝试了here 中显示的方法,但我得到了:

$ git push -f origin 49bcfdceb30a1e9cfab0f0e7e39bfa04dc726b78:master
Total 0 (delta 0), reused 0 (delta 0)
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
To git@git.assembla.com:myproject.git
 ! [remote rejected] 49bcfdceb30a1e9cfab0f0e7e39bfa04dc726b78 -> master (non-fast-forward)
error: failed to push some refs to 'git@git.assembla.com:myproject.git'

信息:

% 49bcfdceb30a1e9cfab0f0e7e39bfa04dc726b78 is the one tagged 'beforerearrange'

关于如何解决此问题的任何建议?

【问题讨论】:

  • git mv 只是移动文件、从存储库中删除旧名称并添加新名称的快捷方式。你是否使用它不会影响 git 是否有你的文件的历史信息。 git 在任何情况下实际上都不会记录任何文件重命名,它会在您稍后查看历史记录时推断出来。
  • @qqx - 我也这么认为,直到我注意到当你执行git mv -f -k source.m destfolder/foldergit status -s 提供重命名而不是删除和创建节点。

标签: git push undo assembla


【解决方案1】:

当被问到时,我不知道它可能与Assembla 的限制有关。

由于这是一次性交易,因此我选择了以下有效的方法:

引用 @michael-mior 提到的 link 中 Assembla 的最后一条评论(现在已过时,但您仍然可以在 way back machine 中找到它) Git-Settings 页面现在有一个“允许强制推送”选项,所以

  1. 转到 Assembla.com
  2. 转到您的项目 -> Source/Git -> 设置
  3. 选中复选框“允许 --force push”
  4. 强制推右节点:

    git push -f origin 49bcfdceb30a1e9cfab0f0e7e39bfa04dc726b78:master
    
  5. 清理当地的烂摊子。
  6. 返回 Assembla.com 并禁用 “允许 --force push”

结果:

【讨论】:

    【解决方案2】:

    Assembla 似乎否认强制推送。 (This thread 建议您必须联系支持人员。)

    由于只是几个提交,您最好的选择可能是使用 git revert 依次撤消它们。

    【讨论】:

    • 您可以从您的存储库设置页面添加强制推送。
    猜你喜欢
    • 2010-11-19
    • 2015-09-03
    • 2014-11-03
    • 2017-12-10
    • 2012-02-29
    • 2020-08-23
    • 2016-10-03
    • 2021-06-28
    • 2013-01-06
    相关资源
    最近更新 更多