2017-03-31 165 views
0

您好我有一個Bitbucket存儲庫。我正在與一個項目的合作伙伴合作,他在幾個提交之前推動了一些更新,在一個文件上工作,我意識到他做了錯誤的代碼。我想恢復那個提交,特別是那個文件,所以我只能返回那個文件的代碼。 cartitems.blade.php恢復特定的舊提交

這可能嗎?

附加的是SourceTree工具的圖像。無法改變的變化是我的新變化。我想保留這些並僅恢復該特定文件。

enter image description here

回答

0

像甩掉最後的提交「好」,這樣就好像這沒有發生過?

假設變化已經在master分支:

git checkout master git reset --hard HEAD~1 git push origin master

這應該是足夠的。

+1

也許強迫推? –

+0

'''git push -f origin master''',順便說一句....如果你沒有使用-f,git會抱怨,因爲origin/master已經超過了你現在試圖放置分支的點。 – eftshift0

+0

我使用SourceTree btw,而不是直接git終端。 – Waleed

0

如果您已經將其推送到您的倉庫並且您在一個大型團隊中工作,請小心,因爲您的隊友可能會因此而導致一些令人沮喪的合併衝突。

2

要恢復cartitems.blade.php文件(不是全部提交),你可以之前籤的文件版本的「壞」的承諾:

git checkout 41123f6 -- resources/views/cart/cartitems.blade.php 

現在確保沒有其他文件都上演提交併提交該文件:

git add resources/views/cart/cartitems.blade.php 
git commit -m "Revert cartitems.blade.php" 

這樣您就不必重寫歷史記錄。然而,我不確定你是否可以用SourceTree GUI做到這一點。您可以使用SourceTree右上角的「終端」按鈕打開終端。

0

您可以使用git revert來反轉特定提交的效果,並創建一個新的提交,並返回更改。

在這種情況下

git revert 797832c 

會自動建立反向變化的承諾。