什么是"分支创建的简写"?

时间:2016-08-31 03:31:14

标签: git

我有一个开发分支,我希望看到"分支创建和#34;之间的区别。现在。实际上,我对创建分支后的提交更感兴趣,这更像是"分支创建" +1。

我知道我可以在Git命令中使用像HEAD和HEAD~1这样的速记。我不知道如何指定"分支创建"。

"分支创建的Git简写是什么?#34;和"分支创建" +1?

3 个答案:

答案 0 :(得分:2)

您的问题存在根本问题:究竟是什么"分支创建"? A"分支"它只是一个指向提交的指针,它本身具有对父提交的引用,父提交具有对父提交的引用,依此类推。[/ p>

如果我像这样绘制我的git历史:

a -> b -> c -> d (master)
      \
       -> x -> y (devbranch)

然后你可能会说答案是显而易见的。但事实是,历史也可以这样绘制:

a -> b -> x -> y (devbranch)
     \
      -> c -> d

这是同样的事情。没有特定的"创造"分支机构;它只是一个应用于提交链尖端的标签。

可能能够使用merge-base命令获得您正在寻找的答案,例如:

git checkout devbranch
git merge-base master HEAD

这将找到"两个提交之间用于三向合并的最佳共同祖先,"在简单的情况下,这可能是两个分支分歧的地方。

答案 1 :(得分:1)

您无法看到分支是如何创建的。此信息不会保存。分支现在指向提交,这就是它。它是一个非常轻量级的对象,很容易设置为指向其他一些提交,从创建以来就失去了分支的历史。

答案 2 :(得分:0)

您可以使用以下命令。

git diff topic...master

这意味着Changes that occurred on the master branch since when the topic branch was started off it

git diff

的引用帮助
   git diff [--options] <commit>...<commit> [--] [<path>...]
       This form is to view the changes on the branch containing and up to
       the second <commit>, starting at a common ancestor of both <commit>. 
       "git diff A...B" is equivalent to 
       "git diff $(git-merge-base A B) B". You can omit any one of 
        <commit>, which has the same effect as using HEAD instead.

此外,您可以看到Find the parent branch of a git branch有关如何查找父分支的信息。