GIT - 如何在不丢失更改的情况下查看旧提交?

时间:2014-10-31 21:49:32

标签: git revert

我正在开发一个项目(主),它有大约100个提交,没有分支等。

我想看看项目在提交1中的表现,然后是10,20,30。

如何在不丢失任何数据的情况下查看早期提交?

我想从以前的提交中看到它后回到我现在的位置。

怎么做?我认为还原是更永久的,我应该寻找别的东西?

4 个答案:

答案 0 :(得分:3)

只是为了寻找(按照你的要求'看')

git checkout [the name of the sha]

你得到的是

git log

在这里,您看到我检查了数百次提交的存储库的初始提交:

$ git checkout 772df05 #  Enough of the sha to be unique, often 6-8 chrs.
Note: checking out '772df05'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 772df05... Initial commit

查看文件然后......

$ git checkout master

最后一点 - 在切换分支之前,您可能需要做两件事:

首先应该添加或存储git中已存在的任何本地更改的文件(而不是新文件)。学习git时添加可能是最简单的 其次,任何已经git add编辑的新文件或已更改的文件都应该被提交 - 即使只是作为“wip”。

答案 1 :(得分:1)

使用git log查看项目的所有提交,使用箭头键向下滚动,直到找到您想要的提交。

然后,只需记下他的哈希值(如55ea49)并使用以下命令:

git checkout <hash>

它将提取文件以匹配提交,但保留另一个保存,所以当你完成后,你可以使用

返回到最新的提交
git checkout HEAD

请注意,要在最近之前进行10次提交,您可以执行

git checkout HEAD~10

显然你可以用任何数字改变10

你应该做

git help checkout

了解结帐的作用

答案 2 :(得分:1)

git revert本身并不丢失任何数据。但是,它 更改工作副本和当前分支的头部。如果您想查看以前的提交,可以使用git log及其许多参数。如果要签出实际提交以在编辑器中查看文件,只需使用git checkout移动到您想要的任何提交。完成后,只需执行git checkout master即可返回当前状态。

答案 3 :(得分:1)

您还可以git stash save将当前作品保存为藏匿处。然后做任何你想做的事情,包括结账修订或应用补丁。然后git stash applygit stash pop重新应用您的本地更改。

编辑:oops抱歉意识到这与原帖有点不同。