2014-02-13 102 views
0

我發出以下命令:無法回退1步後推混帳

git reset --hard HEAD~1 

該臺階代碼回1個推,因爲我想要的。然後我做的代碼一些改變,做:

git add -A 
git push 

而且回來...

! [rejected]  master -> master (non-fast-forward) 
hint: Updates were rejected because the tip of your current branch is behind 

所以我做了以下嘗試強行:

git push -f 

結果是:

Counting objects: 360, done. 
Delta compression using up to 8 threads. 
Compressing objects: 100% (220/220), done. 
Writing objects: 100% (230/230), 1.97 MiB | 354.00 KiB/s, done. 
Total 230 (delta 81), reused 0 (delta 0) 
remote: Analyzing objects (230/230) (18348 ms) 
remote: Storing pack file and index... done (284 ms) 
To <url> 
! [remote rejected] master -> master (TF401026: The ForcePush permission is required to perform this action.) 
error: failed to push some refs to '<url>' 

那麼我該如何推這個代碼t o是當前的主代碼?

git存儲在visualstudio.com上,如果這有所作爲。

+2

您沒有'ForcePush權限'。這由遠程主機控制。爲什麼不做'revert'而不是重置? – helion3

+0

我列出了我所做的。如果有辦法解決它,請在答案中提出建議。 –

+1

您無法強制推送,因爲遠程主機顯然阻止了您。爲什麼'git reset --hard HEAD〜1'而不是還原需要刪除的提交? – helion3

回答

3

Helion提供了很好的建議,身份證建議採取它。基本上我會在你的情況下做什麼是:

首先,按照原始錯誤消息,其中包括git pull,只在這種情況下,我會使用git pull --rebase指示。

這樣跑git pull --rebase <remote name> <branch name>

一旦你的,你,你,你重置後所做的更改將在您之前刪除的文件的頂部重播。

使用Git的日誌將類似於:

commit 0d703fc79bf996e04275888dd6732e77048b2748 
Author: Peter Foti <[email protected]> 
Date: Thu Feb 13 14:18:39 2014 -0500 

    Good Commit 

commit 812fad226565382875021236690f74e96a54a16a 
Author: Peter Foti <[email protected]> 
Date: Thu Feb 13 14:18:03 2014 -0500 

    Commit you previously deleted 

那麼你可以做的是恢復的變化提交你以前寫復位:

git revert <sha hash of bad commit>

的復歸是什麼要做的事實際上是創建另一個提交,以反轉不良提交。因此,它將完全撤銷所有提交以新提交形式進行的操作。

一旦你完成了,你將能夠成功地git push

+0

所以我會'git pull --rebase master master'然後'git revert <最新的散列我不想要'''? –

+0

「遠程」通常是「起源」。從 – helion3

+0

那裏,你'推'''拉''代碼似乎被恢復,然後現在正確更新。但是,我的提示是:[[( ...)| REBASE +0〜1 -0]>'我需要做些什麼? –