您好我有一个Bitbucket存储库。我正在与一个项目的合作伙伴合作,他在几个提交之前推动了一些更新,在一个文件上工作,我意识到他做了错误的代码。我想恢复那个提交,特别是那个文件,所以我只能返回那个文件的代码。 cartitems.blade.php恢复特定的旧提交
这可能吗?
附加的是SourceTree工具的图像。无法改变的变化是我的新变化。我想保留这些并仅恢复该特定文件。
您好我有一个Bitbucket存储库。我正在与一个项目的合作伙伴合作,他在几个提交之前推动了一些更新,在一个文件上工作,我意识到他做了错误的代码。我想恢复那个提交,特别是那个文件,所以我只能返回那个文件的代码。 cartitems.blade.php恢复特定的旧提交
这可能吗?
附加的是SourceTree工具的图像。无法改变的变化是我的新变化。我想保留这些并仅恢复该特定文件。
像甩掉最后的提交“好”,这样就好像这没有发生过?
假设变化已经在master分支:
git checkout master git reset --hard HEAD~1 git push origin master
这应该是足够的。
如果您已经将其推送到您的仓库并且您在一个大型团队中工作,请小心,因为您的队友可能会因此而导致一些令人沮丧的合并冲突。
要恢复仅的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右上角的“终端”按钮打开终端。
您可以使用git revert
来反转特定提交的效果,并创建一个新的提交,并返回更改。
在这种情况下
git revert 797832c
会自动建立反向变化的承诺。
也许强迫推? –
'''git push -f origin master''',顺便说一句....如果你没有使用-f,git会抱怨,因为origin/master已经超过了你现在试图放置分支的点。 – eftshift0
我使用SourceTree btw,而不是直接git终端。 – Waleed