2017-03-31 126 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 

会自动建立反向变化的承诺。