[英]What is the equivalent of TFVC “Rollback” in Git?
如果我使用牛逼 EAM˚Foundation 小號烏爾斯河呼叫控制,我可以很容易地回滾到舊變更。
假設我有一個具有4個版本的文件,則每個版本都有一個changset:
現在,我在版本3和版本4中發現了很多錯誤,我想快速返回到版本2。
在Visual Studio中,我可以單擊文件上的“查看歷史記錄”,單擊Changeset b347(“版本2”),然后單擊“回滾”。
現在,我使用版本2中的文件創建了一個新的變更集,我可以檢入它(我的歷史記錄中仍然有版本3/4,因此有時也可以返回到它們)。
在Git中,我知道有revert
, reset
(硬,軟),但是我不確切知道我需要做什么才能達到相同的結果。
那么在Git中回滾到舊版本的最佳方法是什么(通過Visual Studio首選)?
git reset --hard b347
git push -f origin master
這會完全刪除c560
和d912
,但是之后您需要強制按下。
要撤消創建新提交的更改:
git revert d912 c560
假設您有4個提交ABCD
,每個文件都更改了foo.txt
,並且C
和D
的代碼都有foo.txt
引入的錯誤。
1.其他文件可能會在C和D中更改。如果只想將foo.txt
回滾到B
版本:
git checkout B -- foo.txt
如果要提交回滾,
git commit
歷史將是ABCD-R1
。
2.如果要回滾C和D的所有更改(包括其他文件的更改,如果有的話),並且CD已推送到遠程存儲庫:
git revert D C
歷史將是ABCD-R2-R3
。
3.如果要回滾C和D的所有更改,而CD尚未推送到遠程存儲庫:
git reset B --hard
歷史將是AB
。 您也可以在案例2中使用此解決方案,但隨后需要強制推動分支以覆蓋遠程存儲庫中的分支。 如果其他貢獻者獲取了舊的歷史記錄,則需要告訴他們獲取新的歷史記錄。
不知道什么是TFVC中的簽入,但是如果您只想查看v2文件,則可以git checkout b347 -- thefilenameyouwant
您想要的文件git checkout b347 -- thefilenameyouwant
要繼續工作副本中存儲庫的v2狀態,您可以執行
# get uncommitted changes out of the way
git stash
# recreate v2 in the working copy
git checkout commit-hash-or-tag-of-v2
# create new branch based on v2
git checkout -b branchname-for-new-branch
就像這樣簡單:
git reset --hard b347
說明:
您只需在版本2中創建一個新分支即可。
git checkout b347
git checkout -b redo-work-from-version-2
說明:
redo-work-from-version-2
的新分支。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.