我怎样才能回滚到git中的特定提交?

时间:2015-06-24 00:17:51

标签: git

I done a git log --oneline
111123 my login
222222 logout

我试过git checkout 111123

这回滚到特定的提交但是当我完成git push时,不会回滚我想要的更改。

我删除了本地分支并在新分支中创建一个旧版本 用git checkout [commit]? 我如何回到旧版本并推动更改?。

3 个答案:

答案 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

然后你可以安全地推,并且很好。