我正在努力学习GitHub和Git,并被困在这里。 我想从此Tree中提取一个提交(看起来像这个Github),它在上游远程服务器上,并且有一个提交要合并到我的原始分支中。如何从树中删除提交?
我见过标签和树枝,但从未见过树。这些树是什么?
答案 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 ,但是通常是通过写一个分支或标签名称来完成的。这有两个原因:
实际的哈希ID大,丑陋且看似随机。它们对人类不利。
正如我们刚刚提到的,分支名称的哈希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命令,而没有给您机会检查这是否是个好主意。)