请问 git 怎么看文件某一版本或者某个 commit 是当前分支修改提交的,还是其他分支合并过来的?

2014-12-18 22:27:11 +08:00
 zxq1002
有啥命令可以查么?
6749 次点击
所在节点    问与答
7 条回复
hooozer
2014-12-19 00:04:48 +08:00
自己也没注意过有啥快捷方法,想了个笨办法如下:
因为你知道这个commit的值,比如叫做cm,假如你在master:
git log
找到比cm早一次提交的commit值(那串哈希),copy,这里先叫做cm-1,然后
git branch master4test
git checkout master4test
git reset --hard cm-1 恢复到没那个提交的版本历史

之后就手工一个个比较了。。。
git diff master4test...[another-branch]
mengzhuo
2014-12-19 00:09:27 +08:00
tig
我没拼错
rrrrutdk
2014-12-19 09:23:21 +08:00
git log --decorate --graph COMMIT..HEAD
以图的形式展示某个commit到当前分支的路线。

如果是从其他分支合并的,则显示:
|
* HEAD
| \
| * COMMIT
| |
| /
* VERY BEGINNING
|

否则:
|
* HEAD
|
* COMMIT
|

你也可以加上--online参数,如果commit到HEAD的历史过长的话。
rrrrutdk
2014-12-19 09:26:42 +08:00
……,因为只指定了两端,所以始终会显示一条直线。我错了。

git log --decorate --graph HEAD | grep COMMIT

然后看输出的结果是不是有缩进
* commit COMMIT
还是
| * commit COMMIT
rrrrutdk
2014-12-19 09:28:21 +08:00
再更正一次,那个参数是--oneline不是online
zxq1002
2014-12-19 10:46:39 +08:00
@rrrrutdk 这个好像不行,试了下,如果是pull时选择merge生成的commit是
| * | | commit
如果是分支间merge生成的commit是
* | | commit
zxq1002
2014-12-19 10:48:17 +08:00
@rrrrutdk 如果是git diff获取的差异清单,怎么知道每个差异程序是当前分支修改还是其他分支合并过来的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/154965

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX