Git 技巧:恢复到前一次提交 已翻译 100%

oschina 投递于 2014/03/05 08:23 (共 2 段, 翻译完成于 03-05)
阅读 10850
收藏 112
Git
10
加载中

有时候你希望将你现在的代码返回到前一次提交,并保留所有之前的变化。你希望在前一次提交与当前HEAD之间提交新的代码。

首先,以你希望退回的提交处新建一个分支为 'revert-branch' 。在这个例子中,我们希望退回到前一次提交(假设当前分支为'master'),并且在这个提交上再做修改。

git branch revert-branch HEAD^

接下来切换到新的分支:

git checkout revert-branch

超级小胖
超级小胖
翻译于 2014/03/05 12:17
3

传授一个绝招:从master软恢复到新分支的HEAD。软恢复将改变HEAD的状态,但并不影响工作树。

git reset --soft master

现在,我们执行 git status, 我们将看到我们想要恢复的提交的变化。我要撤销添加'second.txt',但也可能是更复杂的变化:

$ git status
# On branch revert-branch
# Changes to be committed:
#   (use  to unstage)
#
#       deleted:    second.txt
#

现在让我们提交这个 'reversal':

git commit -m "reverted to initial state."


超级小胖
超级小胖
翻译于 2014/03/05 12:57
2
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(20)

超级小胖
超级小胖

引用来自“cyper”的评论

HEAD是project唯一的对吧,head是每个branch的头对吧.
那么,git reset --soft master, 这句将HEAD指向了master的head
那么当前revert-branch的head是否会移动位置和master指在一起了呢???

git reset --soft master仅仅移动HEAD吗?当前分支的head会不会移动呢?(注意我的大小写区分)
谢谢!

您对于HEAD的理解有些许偏差,HEAD指的是当前分支的头。并没有head这个概念。head的写法也只是有时候懒得按shift造成的。
cyper
cyper

引用来自“cyper”的评论

HEAD是project唯一的对吧,head是每个branch的头对吧.
那么,git reset --soft master, 这句将HEAD指向了master的head
那么当前revert-branch的head是否会移动位置和master指在一起了呢???

git reset --soft master仅仅移动HEAD吗?当前分支的head会不会移动呢?(注意我的大小写区分)
谢谢!

我做了一下试验,结果是git reset --soft master不仅会移动HEAD,同时会移动当前branch的head,总算明白了.
cyper
cyper
HEAD是project唯一的对吧,head是每个branch的头对吧.
那么,git reset --soft master, 这句将HEAD指向了master的head
那么当前revert-branch的head是否会移动位置和master指在一起了呢???

git reset --soft master仅仅移动HEAD吗?当前分支的head会不会移动呢?(注意我的大小写区分)
谢谢!
goreyjp
goreyjp

引用来自“舍得333”的评论

引用来自“abel533”的评论

引用来自“舍得333”的评论

兄弟,你真该好好看看git权威指南,或者 pro-git,看了绝对不后悔

看过,由于工作中用的很少,自己平时用git很少遇到复杂情况。。所以到最后就记住了一些基础的命令。。

看看git,了解了解它的实现原理和思路,很有益处的。知其然,更要知其所以然。

这都能碰上你。我在WC :)
shede333
shede333

引用来自“abel533”的评论

引用来自“舍得333”的评论

兄弟,你真该好好看看git权威指南,或者 pro-git,看了绝对不后悔

看过,由于工作中用的很少,自己平时用git很少遇到复杂情况。。所以到最后就记住了一些基础的命令。。

看看git,了解了解它的实现原理和思路,很有益处的。知其然,更要知其所以然。
bindo_
bindo_
git reset --hard HEAD~1
git push origin branch-name --force | git branch new-branch
这个如何?
Kyli
Kyli
太浅
Liuzh_533
Liuzh_533
需要再复习一遍了。
Liuzh_533
Liuzh_533

引用来自“舍得333”的评论

兄弟,你真该好好看看git权威指南,或者 pro-git,看了绝对不后悔

看过,由于工作中用的很少,自己平时用git很少遇到复杂情况。。所以到最后就记住了一些基础的命令。。
shede333
shede333
兄弟,你真该好好看看git权威指南,或者 pro-git,看了绝对不后悔
返回顶部
顶部