我如何从我目前的状态转向在某个承诺上拍摄的截图?

如果我做 git 登录,那么我会得到以下输出:

$ git log
commit a867b4af366350be2e7c21b8de9cc6504678a61b`
Author: Me <me@me.com>
Date:   Thu Nov 4 18:59:41 2010 -0400

blah blah blah...

commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me <me@me.com>
Date:   Thu Nov 4 05:13:39 2010 -0400

more blah blah blah...

commit 0766c053c0ea2035e90f504928f8df3c9363b8bd
Author: Me <me@me.com>
Date:   Thu Nov 4 00:55:06 2010 -0400

And yet more blah blah...

commit 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
Author: Me <me@me.com>
Date:   Wed Nov 3 23:56:08 2010 -0400

Yep, more blah blah.

我如何转向11月3日的承诺,即承诺0d1d7fc?


当前回答

我不能用手动转换我的某种原因,所以这里是我如何完成的。

我检查了我想要的分支,复制了它,检查了最新的分支,复制了我想要的分支的内容到最新的分支目录,过写了变化,并承诺了这一点。

其他回答


快速和直接:取决于情况,快速和污<unk>可能实际上是非常好的。 我的解决方案在这里是不要不可逆转地取代你在工作目录中的文件,从 git 存储库的深处挖掘 / 提取的文件,在你的.git / 目录下,使用敌意聪明和恶魔强大的 git 命令,其中有许多。


Git是一個辉煌的創作,但絕對沒有人能夠只是“把它放在飛機上”:也那些試圖解釋它的人,太頻繁地承擔了其他VCS(版本控制系統)的早期知識,並且太快地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地深入地

想法:基本上你想用以前的承诺取代当前的工作树状态,然后从中创建承诺。

将工作树 *. git rm -r --cached. && git clean -f -d 将工作树带到我们想要的状态 **. git checkout 0d1d7fc3. 创建逆转承诺. git add --all & git commit -m "revert to 0d1d7fc3"


此外,它不会从历史中删除任何东西(压抑或压抑),它产生一个纯粹的承诺,代表我们想要回归的状态。


**当路径被指定(在这里: )时,支票单独留下头部。

对于我和其他人来说,最好的选择是Git重新设置选项:

git reset --hard <commitId> && git clean -f

这对我来说是最好的选择!它是简单的,快速和有效的!


** 注意:** 如在评论中提到的,不要这样做,如果你与其他人分享你的分支,他们有旧承诺的副本。

也从评论中,如果你想要一个更少的“可爱”方法,你可以使用

git clean -i

注意:这得到了很多注意力. 它是超重要,你不这样做,如果你在一个分支,其他人从工作,也(取决于时间框架)不是一个远程,已经与大师合并。

逆转是命令返回承诺。

git revert <commit1> <commit2> 

样品:

git revert 2h3h23233

它可以从头像下面那样从头中取出范围,这里1说“回归最后的承诺”。

git revert HEAD~1..HEAD

然后做:

git push

Rogue 编码器?

工作自己,只是想要它工作吗? 遵循下面的指示,他们已经为我和许多其他人工作了多年。

阅读下面的评论,考虑其他答案,并与你的团队讨论,在你做一些漏洞之前。

将工作复制转换为最新的承诺

要转向以前的承诺,忽略任何变化:

git reset --hard HEAD

在哪里,头部是您当前分支的最后承诺

将工作副本转换为老年委托

要转向比最近的承诺更古老的承诺:

# Resets index to former commit; replace '56e05fced' with your commit code
git reset 56e05fced 

# Moves pointer back to previous HEAD
git reset --soft HEAD@{1}

git commit -m "Revert to 56e05fced"

# Updates working copy to reflect the new commit
git reset --hard

# Push your changes to respective branch
git push -f

信用去一个类似的 Stack Overflow 问题,转向一个承诺由一个 SHA hash 在 Git?.