用SHA拉一棵树

时间:2019-01-09 18:35:16

标签: git github branch commit

我正在努力学习GitHub和Git,并被困在这里。 我想从此Tree中提取一个提交(看起来像这个Github),它在上游远程服务器上,并且有一个提交要合并到我的原始分支中。如何从树中删除提交?

我见过标签和树枝,但从未见过树。这些树是什么?

2 个答案:

答案 0 :(得分:0)

这是一个修订版ID(我会假设)。这就是git实际使用的功能。分支和标记只是修订版本的指针。如果您更喜欢使用分支,则可以为该修订版本创建一个分支,对其进行播放,然后将其删除

git branch temporary c3b039fb # create a branch on that revision
# play around with it doing what you want or need
git branch -D temporary # remote the branch when you are done

答案 1 :(得分:0)

TL; DR:使用提交,而不是树。

Git中的

一棵是一个中间数据结构。除非您正在执行低级Git编程(例如编写新的Git命令),否则通常甚至不需要知道它们的存在。但是,作为参考,每个提交都包含或更确切地说指向指向的一个树对象。树对象是提交如何保留所有文件的完整快照的方式。

请注意,像master这样的分支名称只是一个特定提交的名称,其特殊功能是master名称的一个特定提交会随着时间而变化。像v2.3这样的标记名也是一个特定提交的 名称,目的是使标记名始终为该特定提交命名。

您处理Git的级别是 commit ,但是通常是通过写一个分支或标签名称来完成的。这有两个原因:

  1. 实际的哈希ID大,丑陋且看似随机。它们对人类不利。

  2. 正如我们刚刚提到的,分支名称​​的哈希ID随时间变化。具体来说,分支名称标识 latest 提交。因此,如果您想要最新的提交,则无需知道其较大的丑陋哈希ID,只需知道每个人都同意名称master拥有该ID。如果要使用版本2.3的提交,则只需记住名称v2.3

每个分支名称对于一个特定的Git存储库而言都是本地的。也就是说,您的 master是您的 ;它与其他人的master不同。因此,当您在Git存储库中调用其他Git存储库时,您会发现 master是什么哈希ID,但这不会影响您的 。假设您为另一个Git存储库分配了名称susan:您的Git会记住其master作为您的susan/master

因此,您将运行:

git fetch susan

从您称为“ susan”的Git中获取所有内容,然后:

git merge susan/master

与Git正在调用master的提交合并,而Git正在调用susan/master的提交。

(我建议避免使用git pull,至少要等到您对Git非常熟悉为止。相反,请先运行git fetch,然后戳一下,然后再运行第二个Git命令。请注意,{{1} }只是运行git pull,然后立即运行第二个Git命令,而没有给您机会检查这是否是个好主意。)