有没有办法在远程恢复上次提交但不在本地恢复? 我有一个尚未准备推送的提交,但我希望将其保留在我的本地代表处。
答案 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
错误提交,推送,然后应用存储来恢复您的更改。