在Git中签出时感到困惑

在Git中签出时感到困惑,git,clearcase,Git,Clearcase,我很难理解Git的签出过程。 通过cli,我们可以: git日志和历史记录。 1我们如何知道要签出的文件/版本?我只看到散列/作者/评论/日期。不是文件名。 2如果我使用git checkout-commitid,那么我将使用以前的版本。这与在ClearCase中签出相同吗? 3要返回到我所做的最新更改:git checkout master。这将返回到最新版本,但它是否签出到最新元素?在git中,分支只是到提交的链接,提交由哈希唯一标识。如果您想签出一个特定的提交,您需要知道它的散列,或者应该

我很难理解Git的签出过程。 通过cli,我们可以: git日志和历史记录。 1我们如何知道要签出的文件/版本?我只看到散列/作者/评论/日期。不是文件名。 2如果我使用git checkout-commitid,那么我将使用以前的版本。这与在ClearCase中签出相同吗?
3要返回到我所做的最新更改:git checkout master。这将返回到最新版本,但它是否签出到最新元素?

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

3要返回到我所做的最新更改:git checkout master。这 返回到最新版本,但是否签出到最新版本 元素


取决于您所说的最新版本。如果“最新”是指最新提交,则最新提交可能位于另一个分支上,而不是主分支上。git reflog向您显示所有引用中最近更改的列表。

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

3要返回到我所做的最新更改:git checkout master。这 返回到最新版本,但是否签出到最新版本 元素


取决于您所说的最新版本。如果“最新”是指最新提交,则最新提交可能位于另一个分支上,而不是主分支上。git reflog向您显示了所有引用中最近更改的列表。

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

我不理解这个问题,但我认为它源于对checkout命令的误解。git中文件的每个版本都是一个单独的散列,git日志将显示所有提交,因此您可以在那里看到文件的每个版本。 要将分支更改为以前的状态,请使用git reset命令。git checkout-commitid实际上会分离您的头指针,并使您没有签出分支。这可以用来查看提交时的状态 git checkout master将您的工作分支更改为master。要返回到最新的更改,人们会做很多事情,例如,有时他们会先隐藏现有的更改,然后删除这些更改。
我认为您混淆了其他版本控制系统使用的术语。 git checkout是用于切换正在处理的分支的命令。git checkout master会将您切换到master分支。git签出测试将使您在名为test的分支中工作。 尝试回答您的问题:

我不理解这个问题,但我认为它源于对checkout命令的误解。git中文件的每个版本都是一个单独的散列,git日志将显示所有提交,因此您可以在那里看到文件的每个版本。 要将分支更改为以前的状态,请使用git reset命令。git checkout-commitid实际上会分离您的头指针,并使您没有签出分支。这可以用来查看提交时的状态 git checkout master将您的工作分支更改为master。要返回到最新的更改,人们会做很多事情,例如,有时他们会先隐藏现有的更改,然后删除这些更改。 与ClearCase相反,git并不是逐个文件运行的。 没有包含元素选择规则的配置规范

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

与ClearCase相反,git不是逐个文件运行的。 没有包含元素选择规则的配置规范

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

1如果要签出特定的提交,需要知道其哈希值。我该如何知道我所有文件的哈希值,尤其是如果文件很多的话?2或者你应该有一个提交的参考资料,我不明白你在这里说什么。那么git收银台管理员是做什么的呢?很抱歉说得含糊不清。您应该知道提交的哈希。您可以运行git log来查看提交列表及其哈希。但这是签出提交的困难方法。签出提交的更简单方法是使用引用进行提交,例如,master是对master分支上最后一次提交的引用。因此,您只需执行git checkout master或git checkout master ^1即可在该分支上的最后一次提交之前签出提交。1如果要签出特定提交,您需要知道其哈希值。我如何知道我所有文件的哈希值,尤其是如果有很多文件的话?2或者你应该有一个提交的参考资料,我不明白你在这里说什么。那么git收银台管理员是做什么的呢?很抱歉说得含糊不清。您应该知道提交的哈希。您可以运行git log来查看提交列表及其哈希。但这是签出提交的困难方法。签出提交的更简单方法是使用引用进行提交,例如,master是对master分支上最后一次提交的引用。因此,您只需执行git checkout master或git checkout master ^1即可在该分支上的最后一次提交之前签出提交。git中文件的每个版本都是一个单独的哈希,git日志将显示所有提交,因此您可以在那里看到文件的每个版本。如何从git日志中知道哪个哈希属于哪个文件?git日志中没有提到文件名git日志中的哈希值标识提交,而不是文件。每次提交都是整个存储库的快照,但我在添加了一个文件后执行了git-commit-m。我假设它是提交的文件git中的每个版本的文件都是一个单独的散列,git日志将显示所有提交,因此您可以在那里看到文件的每个版本。如何从git日志中知道哪个哈希属于哪个文件?git日志中没有提到文件名git日志中的哈希值标识提交,而不是文件。每次提交都是整个存储库的快照,但我在添加了一个文件后执行了git-commit-m。我以为是那份文件提交的好吧,你不是唯一一个。。。事实上,我们请来了一个叫杰里米·斯金纳的人,他花了几个小时和我们一起经历这件事。他是一股推动时尚潮流的力量。我们彻底地记录了他的解释。我们已经通过youtube或这个简短的url免费提供了这篇文章。去年他们有6000次的浏览量,为我们赢得了大约15便士!。尽管我不熟悉Clearcase,但它听起来与git完全不同。您不会使用Git签出单个文件,而是签出整个分支。我建议您使用Github的介绍只是为了获得一个大致的理解:好吧,您并不是孤独的。。。事实上,我们请来了一个叫杰里米·斯金纳的人,他花了几个小时和我们一起经历这件事。他是一股推动时尚潮流的力量。我们彻底地记录了他的解释。我们已经通过youtube或这个简短的url免费提供了这篇文章。去年他们有6000次的浏览量,为我们赢得了大约15便士!。尽管我不熟悉Clearcase,但它听起来与git完全不同。您不会使用Git签出单个文件,而是签出整个分支。我建议你用Github的介绍来获得一个大致的理解:自我说明:这个答案写在旧金山的岩石恶魔岛。可怕的监狱,但良好的电话服务;1默认情况下,它恢复所有树的内容,而不仅仅是文件的内容。你的意思是:它恢复树的内容,而不仅仅是文件的内容?2这在分布式环境中没有意义。git工作树中的每个文件都可以随时修改、添加到索引并在本地提交,这与在Clearcase中使用本地快照有什么不同?在git和Clearcase中的概念差异之间,您是否有一些参考资料?@Jim 1/yes。2/yo如果没有连接到vob服务器,则无法签出文件。如果在快照视图中修改文件,它将被“劫持”。你仍然需要退房,然后再在路上办理入住手续。git就不是这样了。每一个提交检查都是本地的。吉姆:我的答案中的第一个环节是CulasCox和Git之间的区别的一个很好的例证。请注意:这个答案是写于旧金山的岩石恶魔岛。可怕的监狱,但良好的电话服务;1默认情况下,它恢复所有树的内容,而不仅仅是文件的内容。你的意思是:它恢复树的内容,而不仅仅是文件的内容?2这在发行版中没有意义
污染环境。git工作树中的每个文件都可以随时修改、添加到索引并在本地提交,这与在Clearcase中使用本地快照有什么不同?在git和Clearcase中的概念差异之间,您是否有一些参考资料?@Jim 1/yes。2/yo如果没有连接到vob服务器,则无法签出文件。如果在快照视图中修改文件,它将被“劫持”。你仍然需要退房,然后再在路上办理入住手续。git就不是这样了。每个提交“检查”都是本地的。@Jim我回答中的第一个链接很好地说明了ClearCase和git之间的区别。