这可能是一个简单的问题(也许之前会问过?),但我找不到答案.(我真的尝试过,我不仅仅是懒惰:))
我正在开发一个基于另一个分支的git分支.但是,我不知道它基于哪个分支.
是否有命令或方法来找出我当前分支来自哪个分支?
我尝试查看SourceTree以及"git log --graph --all",但不知何故,我无法确定创建分支时的起始点.
谢谢!
首先,在git中确实没有这样的概念.
这可能是最好的例子.考虑以下提交图片段:
o <-- branchA
/
o--o--o
\
o--o <-- branchB
Run Code Online (Sandbox Code Playgroud)
在这里,"显然" branchB
来自branchA
.但等等,还有更多,我遗漏了一点:
o <-- branchA
/
o--o--o--o <-- branchC
\
o--o <-- branchB
Run Code Online (Sandbox Code Playgroud)
现在,确实branchB
脱落了branchA
还是脱落了branchC
?
最棘手的部分是任何这些分支都可以按任何顺序创建; 1,此外,标签-分支名称-也可以移动或移除在任何时间.2 因此,如果您认为branchB
"基于" branchA
,但是有人branchA
完全删除,那么您就是这样:
o--o--o--o <-- branchC
\
o--o <-- branchB
Run Code Online (Sandbox Code Playgroud)
而现在branchB
显然是基于branchC
,而不是branchA
.
[ 编辑:如果你想识别两个分支首先"分开" 的特定提交,请使用git merge-base
.找到提交后,您可以看到其他分支名称可能也有趣git branch --contains
,等等.这里的一般规则是提交图是你真正拥有的:分支名称之类的标签只有在你或其他人以后更改它们之前才有效.标签标签通常应保持原样,但即使是那些也可以移动,通常更多的是疼痛.]
1好吧,几乎任何一个:新提交的父提交必须存在才能创建子提交,除非你有办法打破SHA-1加密哈希.
2删除标签意味着通过从该标签开始并向后工作(向左或向上或向上或向下以及向左移动)所发现的提交变得"无法到达",除非他们从其他标签开始发现.在提交-图不可达提交的最终3完全消除,但通常你有30天左右,让他们回来.
3这是通过git的"reflogs"实现的.每个reflog条目的工作方式类似于常规标签,以使提交"可达"并因此保留它.它实际上是过期的reflog条目.
归档时间: |
|
查看次数: |
1641 次 |
最近记录: |