通过本地分支的软重置撤消上次提交,master
并在本地保留更改(在工作树中).
$ git checkout master
$ git reset --soft HEAD~1
$ git log # make sure the last commit is reverted successfully as you expect.
Run Code Online (Sandbox Code Playgroud)
结帐到新的分支(比方说feature
).添加,提交,推送到远程分支(feature
此处).
$ git checkout -b feature # checkout new branch with the local changes
$ git status # see the changed files
$ git add .
$ git commit -m 'message'
$ git push origin HEAD
Run Code Online (Sandbox Code Playgroud)
返回本地master
并强制推送更新远程主服务器(删除远程主服务器的最后提交)
$ git checkout master
$ git push -f origin HEAD
Run Code Online (Sandbox Code Playgroud)
注意:自更改远程主站的历史记录后需要强制推送.
替代:如果你没有强制推动许可或其他人拉扯origin/master
并获得了你的最后一次提交.然后最好还原最后一次提交而不是重置(历史记录更改).
$ git checkout master
$ git log # copy the last-commi-hash
$ git revert <last-commit-hash>
$ git push origin HEAD # note, no force push is needed
Run Code Online (Sandbox Code Playgroud)
创建一个新分支并挑选最后一次提交并推送到远程.
$ git checkout -b feature
$ git cherry-pick <last-commit-hash>
$ git push origin HEAD
Run Code Online (Sandbox Code Playgroud)