我已推进错误的分支,我想推进新的分支,但我已推进rake db:create
分支。有没有办法反转上次提交的推送并获取最后一个代码并再次推送到新分支?
答案 0 :(得分:6)
从本地master
分支撤消软重置的上次提交,并在本地保留更改(在工作树中)。
$ git checkout master
$ git reset --soft HEAD~1
$ git log # make sure the last commit is reverted successfully as you expect.
结帐到新分支(例如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
返回本地master
并执行强制推送更新远程主服务器(删除远程主服务器的上次提交)
$ git checkout master
$ git push -f origin HEAD
N.B:自更改远程主控的历史记录后需要强制推送。
替代:如果您没有强制推送权限或其他人拉出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
创建一个新分支并 cherry-pick 最后一次提交并推送到远程。
$ git checkout -b feature
$ git cherry-pick <last-commit-hash>
$ git push origin HEAD
答案 1 :(得分:0)
git log
这将为您提供所有提交的日志,然后git reset --hard "commit id"
这将重置为给定的头