我最近创建了一个release
分支,我在其中合并了所有标记的提交。目标是将master
重命名为develop
,然后将master
用作release
分支(git-flow like)
现在,当我用git log --all
显示我的完整日志时,我得到了一个非常有用的圣诞树。
* | e503add 10 days ago
| * a2948b1 11 days ago
| |\
| * \ b22e247 3 weeks ago
| |\ \
| * \ \ 01f1ebc 4 weeks ago
| |\ \ \
| * \ \ \ 01336c7 4 weeks ago
| |\ \ \ \
| * \ \ \ \ 59f83a8 5 weeks ago
| |\ \ \ \ \
| * \ \ \ \ \ 25a2444 6 weeks ago
| |\ \ \ \ \ \
| * \ \ \ \ \ \ 4271ae9 6 weeks ago
| |\ \ \ \ \ \ \
| * \ \ \ \ \ \ \ ef62400 8 weeks ago
| |\ \ \ \ \ \ \ \
| * \ \ \ \ \ \ \ \ f56aa1e 2 months ago
| |\ \ \ \ \ \ \ \ \
| * \ \ \ \ \ \ \ \ \ 7fdab4a 4 months ago
| |\ \ \ \ \ \ \ \ \ \
| * \ \ \ \ \ \ \ \ \ \ b25d101 4 months ago
| |\ \ \ \ \ \ \ \ \ \ \
| * \ \ \ \ \ \ \ \ \ \ \ 7477021 6 months ago
| |\ \ \ \ \ \ \ \ \ \ \ \
| * \ \ \ \ \ \ \ \ \ \ \ \ 8b166b4 8 months ago
| |\ \ \ \ \ \ \ \ \ \ \ \ \
| * \ \ \ \ \ \ \ \ \ \ \ \ \ 93be56f 9 months ago
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \
| * \ \ \ \ \ \ \ \ \ \ \ \ \ \ 7b28785 1 year, 4 months ago
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \
| * \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4aaa409 1 year, 4 months ago
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
| * \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4cab662 1 year, 5 months ago
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
| * \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 996564a 1 year, 6 months ago
一种解决方案是使用git log --date-order
代替默认--topo-order
。但是我无法解释为什么我会得到这样的日志。
我使用这个shell脚本创建了我的发布分支:
#!/bin/bash
set -e
git checkout -b release $first-tag
for tag in "${tags[@]}"
do
date=$(git show -s --format="%ad" $(git log -n1 --format=%h $tag))
export GIT_AUTHOR_DATE=$date;
export GIT_COMMITTER_DATE=$date;
git merge -Xtheirs -m $tag $tag
git tag --delete $tag
git tag -a -m $tag $tag
done
如何在--topo-order
中避免使用此圣诞树?
答案 0 :(得分:1)
data: { y: 10, color: 'blue' }
多头[*]表现不佳。如果你想要漂亮的图片,请尝试使用特定分支而不是--topo-order
(在你的情况下为--all
)。
[*]提交必须在它被合并到任何提交之后,因此如果在当前版本之后放置了一些先前的版本提交,它会强制所有分支向下,从而导致树。
我看到的重现问题的示例脚本:
release