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

如果我做 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?


当前回答

可以用 Sourcetree 做得更容易。 只需正确点击承诺,您正在寻找并从菜单中选择“检查”。

此分類上一篇

其他回答

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

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

我发现最不复杂的方式,把一个分支转向任何特定的承诺,在那里你不能改变历史,就是:

查看承诺或分支您的愿望转向. 编辑.git/HEAD 并更改转向您转向的分支。

如如:

echo 'ref: refs/heads/example' > .git/HEAD

如果你做 git 状态,你应该看到你所在的分支和你想转向的分支之间的所有变化。

如果一切都看起来很好,你可以承诺. 你也可以使用 git diff revert..example 确保它是相同的。

重新定位的变革和承诺

Git 的能力正如你想要的那样创作承诺,这意味着有时你需要在 git 添加中进行的更改中取消更改。

Git 不知道这些变化,因为它们从未被承诺,一旦你运行这个命令,就没有办法恢复这些变化。

最后,您可以使用 --mixed 重新设置工作树,而无需排序任何变更。

回归承诺

你可以使用 -no-commit,或者你可以使用 -n 告诉 Git 进行逆转,但停止承诺改变。

否则,您可能会通过尝试转换尚未存在的代码来混淆 Git。

注意! 这个命令可能会导致失去承诺历史,如果用户错误地把错误的承诺。

我有一个类似的问题,我想回到以前的承诺,在我的情况下,我不感兴趣保持新的承诺,所以我使用了硬。

这就是我这样做的:

git reset --hard CommitId && git clean -f

这将转向本地存储库,在这里使用 git push -f 后将更新远程存储库。

git push -f

例如,如果你想完全忽略与名称的承诺执行非团体管理政策从下图

此分類上一篇

你会跑

git reset --hard dd52eb9 && git clean -f

跟随的

git push -f

接下来,你不会看到这个承诺(强制非团体管理政策)在那里

此分類上一篇

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

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


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


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