2012-11-12 55 views
4

所以 - 今天我想做一件好事,並重新安排存儲庫中的文件。承諾並推送到我的Assembla存儲庫。撤消git push到Assembla

The situation in GIT GUI

因爲我沒有用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 [email protected]:myproject.git 
! [remote rejected] 49bcfdceb30a1e9cfab0f0e7e39bfa04dc726b78 -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:myproject.git' 

信息:

% 49bcfdceb30a1e9cfab0f0e7e39bfa04dc726b78 is the one tagged 'beforerearrange' 

就如何解決這個問題有什麼建議?

+0

'混帳mv'僅僅是用於移動文件的快捷方式,從存儲庫中刪除舊名稱並添加新名稱。無論你是否使用它,都不會影響git是否有文件的歷史信息。 git實際上並沒有在任何情況下記錄任何文件重命名,它會在稍後查看歷史記錄時推斷出。 – qqx

+0

@qqx - 我也這麼認爲,直到我注意到當你執行'git mv -f -k source.m destfolder /文件夾'時,'git status -s'給出了重命名而不是刪除並創建了節點。 – Vairis

回答

13

當被問及時,我不知道它可能與Assembla的限制連接。

由於這是一個時間問題,我選擇工作的方法如下:

他援引Assembla在link最後一個註釋(現在已經過時了,但你仍然可以找到它way back machine)由@ michael-提到mior 現在有一個選項「允許力推」在針對Git設置頁面,所以

  1. 轉到Assembla.com
  2. 轉到項目 - >源/混帳 - >設置
  3. 檢查複選框「允許--force推」
  4. 隊推右節點:

    git push -f origin 49bcfdceb30a1e9cfab0f0e7e39bfa04dc726b78:master 
    
  5. 清理地方亂。
  6. 回到Assembla.com和禁用「允許--force推」

結果:

enter image description here

2

看來Assembla拒絕強制推送。 (This thread建議你必須聯繫支持。)

由於這只是一些提交,所以最好的選擇可能只是使用git revert來依次撤消它們。

+0

您可以從您的Repository設置頁面添加強制推送。 – Michael