2014-09-01 89 views
0

我有一個git倉庫,情況是這樣的。如何撤消git中的推送?

過去:反轉102

我所做的更改,並將其推到倉庫,所以

現:反轉103

現在,我想撤消所有的更改,並返回到修訂版102所以當用戶檢查/更新存儲庫時,它將與rev 102相同。我嘗試恢復,但rev 103仍保留在遠程存儲庫中,因此在結帳或更新時,它是rev 103被檢出。謝謝。

+0

也許你會發現[這有用](http://stackoverflow.com/questions/1270514/undoing-a-git-push) – ekostadinov 2014-09-01 09:18:29

回答

0

有幾種方法,我有時使用的方法如下。

首先將您的標題重置爲先前的提交。當然,您可以在重置時指定任何提交。

git reset --hard HEAD~1 

然後力推到遠程存儲庫-f--force-with-lease。後面的選項用於在rev 103之後避免覆蓋其他用戶的新提交。

git push origin master --force-with-lease 

但前提是遠程存儲庫允許強制推送,因爲強制推送是非常危險的,會覆蓋歷史記錄。

+0

此操作可能是危險的,我會建議使用'revert'來代替。如果您進行硬重置並將其推送到遠端,則需要確保沒有人拉出最後一個版本,因爲您正在移除它的所有痕跡!通過使用「revert」動作,你可以避免這種問題 – 2014-09-01 09:34:26

+0

是的,'revert'更安全,但'rev 103'仍然適用於這種情況。根據問題的描述,似乎只是想在沒有其他用戶意識到的情況下移除「rev 103」。因此,這取決於對危險知識的真正需求。此外,我們可以使用'--force-with-lease'而不是'-f'來避免覆蓋其他用戶的新提交。 – Landys 2014-09-01 09:52:37

+0

你說得對,我只是想提到在使用遠程回購時使用這個命令的風險。 – 2014-09-01 10:01:56