【发布时间】:2014-10-21 19:28:28
【问题描述】:
我在 2014 年 8 月 27 日星期三 19:43:46 +0800 有一个提交,
commit bbdbbb7214de8611a787c92daf93dbc2719600d0
Author: malloc (malloc@slowcast.com)
Date: Wed Aug 27 19:51:17 2014 +0800
commit a5f8bcbf7fdfa995325a338a02ad8eef611ac9f8
Author: malloc (malloc@slowcast.com)
Date: Wed Aug 27 19:43:46 2014 +0800
提交的编辑显示 3 个文件已被修改。
git d --name-only a5f8bcb^..a5f8bcb
res/layout/layout_login.xml
base/BaseAct.java
ui/login/Login.java
(END)
然后其他人提交他们的修改。
commit 833dee16869ceb834cb1b8d8ac38bf3d0f147e66
Author: simon (simon@slowcast.com)
Date: Wed Aug 27 20:13:42 2014 +0800
commit b391737ac94d5d779c1cb00b05a7c3bccee98915
Author: muham (muham@slowcast.com)
Date: Wed Aug 27 20:00:35 2014 +0800
在 b391737 版本中,Login.java 是新版本,但在 833dee1 版本中,Login.java 的内容是旧版本。 (以及其他文件已被修改)
检查提交833dee1,只提交一个文件
git d --name-only 833dee1^..833dee1
res/values/strings.xml
(END)
然后查看Login.java的日志
git log ui/login/Login.java
commit c5a5ae9a48c2f1d44b6cd3654c20834ed49b3991
Author: simon (simon@slowcast.com)
Date: Thu Aug 21 15:54:39 2014 +0800
commit 7e65405d19a946349ee4ac07176a37098f52867b
Author: shubin (nick@slowcast.com)
Date: Fri Aug 15 15:22:01 2014 +0800
最新的提交是在 Thu Aug 21 15:54:39 2014 +0800,没有我的编辑日志。
怎么会这样?提交 833dee1 没有我编辑的文件,Login.java 的历史记录也丢失了我的编辑。
是否有一些命令可以找到 Login.java 的整个历史记录?
编辑
==========================================
我们只使用了一个分支master,并且日志不仅在本地,远程的git克隆也得到了相同的日志历史。
添加一些输出:
$ git log --oneline --graph --color=auto --decorate --all ui/login/Login.java
- b77af0c (HEAD, origin/master, origin/HEAD, master) 恢复登录
- 9f88669 临时修复
- c5a5ae9 添加一些评论
- 7e65405 配置编辑 ... ...
c5a5ae9是2014年8月21日15:54:39,很多天前,9f88669和b77af0c在我们发现问题后提交,git丢失了a5f8bcb的日志。
git log --oneline --graph --color=auto --decorate 833dee16...bbdbbb72
- 833dee1 更改变量
- bbdbbb7 修改默认头像样式
- a5f8bcb 登录页面样式
- 8b4aff8 添加一些字符串
- ab1e53c 添加一些字符串
- 9ab6bea 编辑rec用户页面样式
【问题讨论】:
-
上面没有显示提交的父子关系,也没有显示
HEAD是什么,所以很难说。查看提交图(使用gitk --all或git log --graph --oneline --decorate --all之类的图形查看器)可能会很有启发性。 -
我们只使用master分支,commit是按提交时间排序的
-
Commit
a5f8bcbf7fdfa995325a338a02ad8eef611ac9f8显然不是 in 您在上面显示的git log输出。换句话说,它在分支master上不存在。也许有人删除了它。 -
上面提到的所有提交都在 git log 中,[git log --oneline --graph --color=auto --decorate 833dee16...bbdbbb72] 的输出表明了这一点。跨度>
-
@Malloc 当你粘贴输出时,你应该把它粘贴到 exactly 中,因为它来自 Git。
--graph将显示一个图表,表明祖先是什么样的,--decorate将显示每个分支指向的内容。如果没有这些信息,就很难为您提供更多帮助。
标签: git git-commit git-log