Git 如何从上一次提交访问第二次现有提交?

Git 如何从上一次提交访问第二次现有提交?,git,Git,假设我对同一个名为“planets.txt”的文本文件进行了3次提交 第一次提交时,存储消息: 没有发现行星 第二次提交: 没有发现行星 火星(找到了!) 第三项承诺: 没有发现行星 火星(找到了!) 朱庇特(找到了!) 假设我返回到提交的第一个版本,并通过添加以下文本对文件进行更改: 没有发现行星 地球被外星人消灭 这代表了我创作的这个简短叙述的另一个现实。在这个例子中,我做了整个过程作为一个git添加。和git提交-m“新现实,人类在发现行星之前就被毁灭了” 为什么当我回到主

假设我对同一个名为“planets.txt”的文本文件进行了3次提交

第一次提交时,存储消息:

  • 没有发现行星
第二次提交:

  • 没有发现行星
  • 火星(找到了!)
第三项承诺:

  • 没有发现行星
  • 火星(找到了!)
  • 朱庇特(找到了!)
假设我返回到提交的第一个版本,并通过添加以下文本对文件进行更改:

  • 没有发现行星
  • 地球被外星人消灭
这代表了我创作的这个简短叙述的另一个现实。在这个例子中,我做了整个过程作为一个git添加。和git
提交-m“新现实,人类在发现行星之前就被毁灭了”

为什么当我回到主机,运行
git日志
,输入第一个提交,然后运行第二个
git日志
,我看不到带有“新现实,人类在发现行星之前被毁灭”信息的提交


文件没有保存吗?如果是,我如何访问它?

在Git中,另一个现实是一个分支。现实存在于这一分支上

我来示范一下。首先,我将在master(默认分支)上构建三个系列提交:

很好,到目前为止还不错。现在,我将回到第一次提交并从那里分支:

$ git branch alternateReality 4adf
$ git checkout alternateReality
$ echo "earth wiped out" >> a.txt
$ git commit -a -m'wiped'
我仍然在
alternational
分支上。让我们看看这个文件:


$ cat a.txt
no planet discovered
earth wiped out
但与此同时,原始现实仍然存在于另一个分支上,
master
,我可以通过切换到该分支看到它:

$ git checkout master
$ cat a.txt
no planet discovered
Mars found
Jupiter found
两个都可以,每个分支上都有一个,但不能同时看到两个。它们是交替的现实。要查看另一个,必须切换分支


(在真实的Git生活中,交替现实的目的是最终将它们合并到一个现实中。你可以通过合并分支来实现这一点。但据我所知,这不是你所要求的。这两个分支不容易合并,因为它们是相互冲突的交替现实。)

你是怎么做到的“返回到第一个版本”?如果你做git log--all--oneline,你看到提交了吗?嗨@matt,我还有一个问题…在我用问题中描述的代码创建的另一个现实的情况下。在这种情况下,更改永远丢失了,对吗?或者有办法访问它吗?git中的任何内容都不会丢失,除非你有意选择销毁它。如果您按照我的方式进行,分支将继续存在,因此该分支上的所有提交都将继续存在。您将允许故意删除该分支以明确销毁该分支,如果这意味着提交将被销毁,Git将大声抵制您这样做。
$ git checkout master
$ cat a.txt
no planet discovered
Mars found
Jupiter found