反向最后推送Github.

Hab*_*bib 3 git branch push github

我推了错误的分支,我想推进新的分支,但我已经推进了master分支.有没有办法反转上次提交的推送并获取最后一个代码并再次推送到新分支?

Saj*_*han 6

通过本地分支的软重置撤消上次提交,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)