2015-06-24 36 views
-1
I done a git log --oneline 
111123 my login 
222222 logout 

从来就尝试git的结帐111123我该如何回滚到git中的特定提交?

这回滚到提交具体的,但是当我做了一个混帐推doesn't回滚与变化,我想。

有我删除了本地分支,在一个新的分支创建一个旧版本 用git结帐[提交]? 我如何回到旧版本并推送更改?

+0

'GIT中结帐COMMIT; git分支-D BRANCH; git checkout -b BRANCH'但是请注意,覆盖共享服务器上的历史记录可能会造成严重问题。 – StenSoft

回答

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 

然后你就可以放心地推,并且是好去。

1

后你做的git checkout 111123你是在分离模式。所以你必须从git checkout -b newbranch创建另一个分支,然后你可以这样做:git push origin newbranch:remotenewbranch

或者你可以先删除远程分支,然后把你的本地新分支从提交(git push origin :remotebranch然后git push origin newbranch:remotebranch)制成,或者你可以做一个强制更新到以前与git push origin +111123:remotebranch提交。

2

要添加以前的答案,我会做到这一点使用的git reset <hash of commit>命令,这样您将保留以前提交,而你可以放心地回到所需提交。

这里有撤销的文档。 http://git-scm.com/docs/git-revert

我更喜欢这种方法,因为我更安全地看到它。

相关问题