还原远程但不在本地的提交

时间:2018-04-30 08:44:44

标签: git github

有没有办法在远程恢复上次提交但不在本地恢复? 我有一个尚未准备推送的提交,但我希望将其保留在我的本地代表处。

3 个答案:

答案 0 :(得分:2)

最安全的选择是使用您的提交创建一个单独的分支,并明确revert主分支上的提交并推送更改。

git checkout -b temp
git checkout master
git revert <commit_id>
git push origin master

当您的提交准备好再次发布时,您可以还原恢复提交。

其他方法是再次创建一个单独的分支,并将主分支上的HEAD重置为上一次提交并强制推送更改。如果你没有与任何人分享分支,或者你明确确定它不会影响其他人,你应该只选择这个选项。

答案 1 :(得分:1)

当然,您可以将远程分支的提示的父级推送到远程分支:

git fetch
git push -f origin origin/master^:master

其中origin是远程,master是分支。或者,如果您已经同步并且在相关分支上,则只是

git push -f origin HEAD^:master

假设您打算删除提交而不创建还原提交(因为这可能只会让您感到烦恼)。

答案 2 :(得分:1)

这里最好的选择可能是git revert远程提交:

git revert <SHA-1 of bad commit>

然后,只需正常推送,遥控器的状态就是你最近的提交。

如果您需要立即删除错误提交,请考虑以下事项:

# from your local branch
git reset --soft HEAD~1
git stash
git revert <SHA-1 of bad commit>
git push origin your_branch
git stash apply
git commit -m 'your latest commit'

这将获取您最新的提交并将其重置回舞台。然后,我们可以存储那些分阶段的变化。请注意,这实际上将您的最新提交从您的分支移动到存储。清除本地分支后,您可以git revert错误提交,推送,然后应用存储来恢复您的更改。