2

我无法理解Git.
通过 cli 我们做:
git log和历史。
1)我们如何知道我们要检查哪个文件/版本?我只看到哈希/作者/评论/日期。不是文件名。
2)如果我这样做,git checkout -commitid-那么我会转到以前的版本。这与在 ClearCase 中进行结帐相同吗?
3) 要返回我所做的最新更改:git checkout master. 这将返回到最新版本,但它是否对最新元素进行了结帐?

4

3 回答 3

2

我认为您混淆了其他版本控制系统使用的术语。 git checkout是用于切换您正在处理的分支的命令。 git checkout master会将您切换到在 master 分支上工作。 git checkout test会导致你在一个名为 test 的分支中工作。尝试回答您的问题:

  1. 这个问题我没看懂,但是我觉得是因为对checkout命令的误解。git 中文件的每个版本都是一个单独的哈希,git log 会显示所有提交,因此您可以在那里看到文件的每个版本。
  2. 要将分支更改为以前的状态,请使用该git reset命令。 git checkout -commitid-实际上会分离您的 HEAD 指针,并让您没有签出任何分支。这可用于查看提交时的状态
  3. git checkout master 会将您的工作分支更改为 master。要返回最新的更改,人们会做很多事情,例如,有时他们会隐藏现有的更改然后删除存储。
于 2013-05-09T19:03:12.733 回答
2

与 ClearCase 不同(请参阅我的旧答案),git 不会逐个文件地运行。
没有带有“元素选择规则”的“配置规范”。

git checkout可以应用于文件,但默认情况下,它会恢复所有树的内容,而不仅仅是文件的内容。
它与 a 不同,cleartool checkout,因为您不必标记(甚至锁定)文件以进行修改(如 ClearCase 中的状态):这在分布式环境CHECKEDOUT中没有意义。git 工作树中的每个文件都可以随时修改、添加到索引并在本地提交。

于 2013-05-09T19:29:27.093 回答
0

在 git 中,分支只是提交的链接,由哈希唯一标识。如果你想检查一个特定的提交,你需要知道它的哈希,或者你应该有一个对提交的“引用”。分支和标签都是对提交的“引用”,因此您可以使用分支名称而不是提交哈希来签出该提交中的文件。

3)返回我所做的最新更改:git checkout master。这将返回到最新版本,但它是否对最新元素进行了结帐?

取决于最新版本的含义。如果最新的意思是最新的提交,那么最新的提交可能在另一个分支上,而不是master分支上。git reflog向您显示所有参考文献中最近更改的列表。

于 2013-05-09T18:14:12.223 回答