撤销对Assembla的git push操作

4
所以-今天我想做一件好事,重新排列我的代码仓库中的文件。提交并推送到我的Assembla代码仓库。
由于我没有使用git移动命令,所有文件都失去了历史记录。我意识到了我的错误,想要摆脱不必要的更改,以便之后进行正确的操作。我尝试了这里展示的方法,但是我得到了:
$ 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
@qqx - 我也曾这样想,直到我注意到当你执行 git mv -f -k source.m destfolder/folder 命令后,git status -s 会显示重命名的节点,而不是删除和创建的节点。 - Vairis
2个回答

13
当被问及时,我并不知道它可能与Assembla的限制有关。
由于这只是一次性的交易,我选择了以下方法,它起作用了:
引用Assembla在link中的最后一条评论(现已过时,但仍可在way back machine中找到),由@michael-mior提到
现在在Git设置页面中有一个“允许强制推送”的选项,因此
  1. Go to Assembla.com
  2. Go to your project -> Source/Git -> Settings
  3. Check the check-box "Allow --force push"
  4. Force push the right node:

    git push -f origin 49bcfdceb30a1e9cfab0f0e7e39bfa04dc726b78:master
    
  5. Clean up local mess.
  6. Go back to Assembla.com and disable "Allow --force push"

结果:

enter image description here


2

看起来Assembla不允许强制推送。(这个帖子建议你联系支持部门。)

既然只有几个提交,你最好的选择可能是使用git revert依次撤销它们。


你可以从仓库设置页面添加强制推送。 - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接