I done a git log --oneline
111123 my login
222222 logout
从来就尝试git的结帐111123我该如何回滚到git中的特定提交?
这回滚到提交具体的,但是当我做了一个混帐推doesn't回滚与变化,我想。
有我删除了本地分支,在一个新的分支创建一个旧版本 用git结帐[提交]? 我如何回到旧版本并推送更改?
I done a git log --oneline
111123 my login
222222 logout
从来就尝试git的结帐111123我该如何回滚到git中的特定提交?
这回滚到提交具体的,但是当我做了一个混帐推doesn't回滚与变化,我想。
有我删除了本地分支,在一个新的分支创建一个旧版本 用git结帐[提交]? 我如何回到旧版本并推送更改?
最安全的事情是不写历史,而是简单地改变回购的状态,以便它匹配提交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
然后你就可以放心地推,并且是好去。
后你做的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
提交。
要添加以前的答案,我会做到这一点使用的git reset <hash of commit>
命令,这样您将保留以前提交,而你可以放心地回到所需提交。
这里有撤销的文档。 http://git-scm.com/docs/git-revert
我更喜欢这种方法,因为我更安全地看到它。
'GIT中结帐COMMIT; git分支-D BRANCH; git checkout -b BRANCH'但是请注意,覆盖共享服务器上的历史记录可能会造成严重问题。 – StenSoft