I done a git log --oneline
111123 my login
222222 logout
我试过git checkout 111123
这回滚到特定的提交但是当我完成git push时,不会回滚我想要的更改。
我删除了本地分支并在新分支中创建一个旧版本 用git checkout [commit]? 我如何回到旧版本并推动更改?。
答案 0 :(得分:2)
要添加上一个答案,我将使用git reset <hash of commit>
命令执行此操作,这样您就可以保留以前的提交,同时可以安全地返回到所需的提交。
以下是还原的文档。 http://git-scm.com/docs/git-revert
我更喜欢这种方法,因为我看得更安全。
答案 1 :(得分:1)
执行git checkout 111123
后,您处于分离模式。因此,您必须使用git checkout -b newbranch
创建另一个分支,然后您可以通过这种方式进行推送:git push origin newbranch:remotenewbranch
。
或者您可以首先删除远程分支,然后推送由提交(git push origin :remotebranch
然后git push origin newbranch:remotebranch
)创建的本地新分支,或者您可以使用{强制更新以前的提交{1}}。
答案 2 :(得分:1)
最安全的做法是不要覆盖历史记录,而是简单地更改仓库的状态,使其与提交111123
匹配。要完成此操作,请执行以下操作,假设您正在使用master
:
git checkout -b temp-branch 111123
git reset --soft master
git commit -m "Reverting state to match commit 111123"
git checkout master
git merge temp-branch
git branch -d temp-branch
然后你可以安全地推,并且很好。