回到Gitkraken先前的提交

时间:2017-08-14 21:48:14

标签: git rollback gitkraken

我的编程伙伴和我,对Git和Gitkraken来说相当新,犯了一些错误,做了一些推动拉扯和提交错误的顺序,并把事情弄得很糟糕。我想从几个提交中获取快照,并手动将其与代码的当前状态进行比较。

的命令

“将工作目录状态转换为历史提交” 或者更好, “将历史提交的内容提供给另一个工作目录,我将其命名为”

给我的选项看起来并不那么正确。我看到“将master重置为此提交”有几种风格,但这些标题都没有让我相信我会在没有损坏返回当前状态的路径的情况下查看之前的状态。我错过了什么吗?做我想做的最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

  

......但这些标题都没有说服我,我会去看看   以前的状态没有损坏回到当前状态的路径...

首先,你可以随时回去。 GitKraken提供了方便的 Undo 按钮,让您可以使用简单的按钮klick恢复您所做的大部分工作。如果您想确保可以轻松返回,只需创建一个ngx-bootstrap分支即可。如果出现问题,请检查一下,然后再回来。

因此,您可以放松,只需尝试一下,而无需担心破坏任何东西。现在的问题是你真正想做的事情:

  •   

    “将工作目录状态带到此历史性提交”

    如果您只想返回先前的状态(即提交),则可以使用backup。你将回到选定的提交状态,好像什么都没发生一样。如果仍然可以从任何分支访问您的主要状态(如果您创建了备份分支,则会出现这种情况),您仍然可以查看所有提交及其更改。

    请注意,在进行硬重置时,您会失去未经分级和未经修改的更改。

  •   

    “把这个历史性承诺的内容转交给另一个不同的工作   目录,我将其命名为“

    Git只知道一个工作目录,所以这不是直接可行的。 但是,您可以通过@ChristopherDíazRiveros建议的方式将您当前的状态与之前的状态进行比较。您可以执行reset <branch> to this commit - hard,而不是hard重置。这会将您的工作目录重置为所选提交,但将所有更改(与之前的状态相比)保留为分阶段更改。这使您可以轻松查看它们,因为它们出现在GitKraken的右下角,您可以根据需要丢弃或提交。

答案 1 :(得分:1)

我建议您使用git reflog,此命令包含您的提交和更改的本地历史记录,使用此日志,您将看到本地仓库中的所有事件。

找到要恢复的确切提交后,可以将该提交设置为git reset --soft HEAD@{n}

的起点

--soft做的是

Does not touch the index file or the working tree at all (but resets the 
head to <commit>, just like all modes do). This leaves all your changed
files "Changes to be committed", as git status would put it.

在此之后,您将在舞台区域中进行所有更改,然后您可以决定是再次提交还是更改某些内容。

我建议您阅读this中的Git's book部分以及有关撤消事项的this部分。

PS。作为额外的,您可以根据需要多次使用git reset,因为您使用的所有命令都保存在git reflog中,因此,如果您执行的操作不是{0}}想要,你也可以撤消它。

希望有所帮助