duw*_*uwo 6 git git-merge git-branch
例如,假设我已经
master合并到g1,分支g1已经合并到master。
git merge master -m "#3 git merge master to g1"
git merge g1 -m "#3 git merge g1 to master"
...
...
git branch -r -v
>
origin/g1 8b535b9 #3 git merge master to g1
origin/master a335421 A comment
origin/newbranch 626a6d2 branch example
Run Code Online (Sandbox Code Playgroud)
有什么方法可以查看分支开始时分支的创建顺序,时间戳或SHA?还是以某种方式找到哪一个分支起源于另一个分支?除了我的名字,我知道师父是我最老的。
如果你有兴趣的时候,你所创建的分支(在你的本地库),和有问题的分支产生不是很久以前(不到90天前使用默认设置),你可以看看它引用日志的创建活动。
$ head -1 .git/logs/refs/heads/<branch_name>
000000... 4a28f1... J Hacker <joe@example.com> \
1400885439 +0200 branch: Created from HEAD
Run Code Online (Sandbox Code Playgroud)
为了简化可读性,此处缩短了SHA-1标识符,并且该行显示为断行-在实际输出中,它是一条长行。
此处的时间以UNIX时间戳(自纪元以来的秒数)加上数字时区表示。您可以date用来将其转换为可读的输出,例如:
$ date --date=@1400885439 --rfc-2822
Sat, 24 May 2014 00:50:39 +0200
$ TZ=GMT-2 date --date=@1400885439 --rfc-2822
Sat, 24 May 2014 00:50:39 +0200
Run Code Online (Sandbox Code Playgroud)
不幸的是,从git版本2.2.1开始,没有漂亮的reflog日期格式。下面是迄今为止所有与reflog相关的漂亮格式:
- '%gD':reflog选择器,例如
refs/stash@{1}- '%gd':缩短的引用日志选择器,例如
stash@{1}- '%gn':引用日志标识名称
- '%gN':引用日志标识名称(使用.mailmap,请参阅
- '%ge':reflog身份电子邮件
- '%gE':reflog身份电子邮件(尊重.mailmap,请参阅
- '%gs':reflog主题
如果您对其他人创建分支感兴趣,那么情况就困难得多。
首先,您只能找到分支从其分支的提交及其提交日期;该分支可以稍后创建。正如@Jubobs在评论中写道,除了reflog(严格来说是本地的)之外,Git不会记录分支的创建日期。
其次,您还需要知道分支(或一组分支),该分支是分支的。如果分支库看起来完全一样foo在提交分叉A的分支bar,当分支bar在提交分叉A的分支foo(与本地引用日志信息除外)。
假设所讨论的分支是从一个集成分支maint,master或分支出来的主题分支next,我们可以使用它git merge-base --all来找到共同祖先,然后git show以适当的格式来找到提交日期,如下面的Mykola Gurov回答。例如:
$ echo maint master next |
while read -d ' ' branch; do
git merge-base --all $branch <branch_name>;
done | sort | uniq |
xargs git show -s --format=format:%ci
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3481 次 |
| 最近记录: |