294

如何切换到特定的 Git 提交而不丢失之后所做的所有提交

我希望本地文件将被更改,但提交的数据库将保持不变,只有当前位置指针设置为当前选定的提交。

我想将文件的状态更改为特定的提交,运行项目,并在完成后将文件恢复到上次提交。

如何在不压缩整个项目文件夹的情况下做到这一点?

4

4 回答 4

397

如果您在某个分店mybranch,请继续前进git checkout commit_hash。然后您可以通过git checkout mybranch. 我今天有同样的游戏将错误一分为二 :) 另外,您应该了解git bisect

于 2012-04-19T14:38:44.283 回答
68

首先,使用git log查看日志,选择您想要的提交,记下用于识别提交的 sha1 哈希。接下来,运行git checkout hash. 完成后,git checkout original_branch. 这具有不移动 HEAD 的优点,它只是将工作副本切换到特定的提交。

于 2012-04-19T14:39:22.533 回答
27

除了此处向您展示的其他答案之外,git checkout <the-hash-you-want>值得知道您可以切换回您使用的位置:

git checkout @{-1}

这通常比:

git checkout what-was-that-original-branch-called-again-question-mark

如您所料,git checkout @{-2}将带您回到您在 2 git checkouts 前所在的分支,对于其他号码也是如此。如果你能记住你在哪里获得更大的数字,你应该为此获得某种奖牌。


可悲的是,对于生产力来说,git checkout @{1}它没有带你去你将来会去的分支,这是一种耻辱。

于 2018-09-17T07:21:38.387 回答
1

我曾经实现过 git checkout @{10} 并且工作正常,然后我的大杯焦糖咖啡突然掉到了电脑上,然后......

于 2021-11-25T05:07:27.137 回答