git - 什么时候从 master 分出分支?
问题描述
几天前,我从终端中的 master 分叉了当前分支。从那时起,已经做了一些提交,但是当我输入 时git log
,我看到了以前的提交,我在当前分支上所做的那些,以及其他人在 master 上所做的那些。只能假设,在其他人的提交和我的提交之间的某个地方,我会(在主分支上)输入
git checkout -b newbranch
是否有一个 git 命令可以告诉您从 master 分叉 newbranch 时的确切时间戳?
解决方案
并不真地。那不是 git 跟踪的东西。事实上,它甚至没有跟踪newbranch
“从master
”专门分支的事实。(顺便说一句,我建议不要使用“fork”来指代分支之间的关系,因为“fork”通常对 git repos 和 OSS 项目具有特定的含义。)
正如 RomainValeri 建议的那样,在特定情况下,您可能能够查看与分支关联的元数据的文件系统时间戳;但这些不能保证意味着什么。有时他们提到的文件要么不存在,要么是在与分支创建无关的时间创建的。即使它确实存在并且确实反映了正确的时间戳,也没有多大意义;因为“创建分支”仅意味着创建了一个新的 ref。这并不意味着它已经(或曾经)被检出,或者说任何关于哪些 ref(s) 将包含新提交的内容。
可视化现在情况的最简单方法是获取显示分支和其他 refs 位置的提交图。你可以使用类似的东西git log --graph --all --full-history
。(该--full-history
选项可能是不必要的,但由于我们不确定发生了什么,这将给出最真实的画面。)或者您可能会发现 GUI 更易于阅读;gitk --all --full-history
当我需要看“大图”时,我经常使用。
请记住,在创建分支之前的提交肯定会默认显示。也就是说,如果你有
A -- B -- C <--(master)
\
D <--(newbranch)
那么默认情况下的日志D
包括A
、B
和D
,因为这是代码的完整历史记录,因为它存在于newbranch
。如果您看到C
,则表明您确实根本没有打开newbranch
(上图不是您在这种情况下真正拥有的)。
其余的可能是切线,但以防万一......
A
默认情况下包含的原因B
是因为 git 不知道/不关心哪个分支是从哪个其他分支创建的,或者类似的东西。在上图中,newbranch
可能是原始分支,并且master
可能是从它分支的B
;newbranch
对于 git,这与从master
at分支相同B
。或者D
可以在分离的 HEAD 状态下创建,并且newbranch
可以在保存D
. 或者可能会发生很多其他事情。
如果您只想查看添加到的提交newbranch
,您可以这样说git log master..newbranch
(告诉日志排除任何属于master
历史的提交)。
推荐阅读
- powershell - 计算有条件的行数
- ios - 向本机 ios Files 应用程序显示我的应用程序中的特定文件夹
- liferay - 如何从外部应用程序..使用 liferay jsonws 或任何其他方式从 liferay 下载文档
- python - 结合多个详细的python正则表达式
- java - 任务应用程序执行失败:processDebugResources
- javascript - 根据属性将一个对象拆分为多个对象
- php - 在由按钮触发的变量中创建的 url 中重定向
- sql - INNER JOIN 与 ON 除一列外的所有列
- gcc - 就现代 C++ 中的 operator+= 而言,对称 operator+?
- npm - 如何使用 visual-studio-code 编辑 npm 配置文件?