2014-02-20 76 views
3

我需要恢復提交,但前提是不會有衝突。像git revert --only-if-no-conflicts但沒有這樣的選項,沒有--dry-run--no-commit仍然會影響我需要避免的工作副本)。可能幹運行`git revert`?

在這種情況下,回覆從腳本運行,因此我無法手動檢查是否存在衝突。我可以通過腳本以某種方式做到這一點,但在深入研究之前,是不是有一些聰明的方法可以讓Git在沒有衝突的情況下成功恢復?

回答

2

腳本應該:

科,恢復,觀察。

如果你不想碰你的工作樹,就可以在/tmp創建一個新的目錄與git-new-workdir,例如。

然後,你可以清楚地,

new branch $ git revert --no-edit ce6982e || \ 
       { export REVERT_FAILED=yes; git revert --abort; } 

回到原來的分支和行爲上的觀察,即如果恢復上的臨時支的復歸是成功的。

+0

分支+恢復仍然會影響我需要避免的工作副本。 (製作一個副本/克隆並在那裏嘗試也沒有選擇,我被「空運行」需要在唯一的工作副本上發生的事實所束縛)。 – Borek

+0

我想影響文件系統,但只有在回覆成功而沒有衝突的情況下。換句話說,我需要在實際執行之前找出它是否會成功。 – Borek

+1

@Borek這是不可能的,在恢復git需要應用diff的情況下,只有這樣你纔會知道是否存在衝突。該應用程序必須發生*某處*,因此如果您不想影響工作樹,請按上面的建議在*/tmp *中執行。 – mockinterface