git graph有没有分支点的分支?

时间:2013-09-04 18:26:52

标签: git

除了截图,我无法解释这个:

gitg graph

这对世界来说意味着什么? feat-zoo分支似乎无处可去。

编辑:

根据请求,用于生成此脚本的脚本。运行脚本,查看图表,然后重新开始,删除sleep 2调用,您将获得与上面的屏幕截图相匹配的不同结果。

#!/bin/sh

[ -d .git ] || git init

ACT="rebase"

echo "blah blah" > file1.txt
echo "another file" > file2.txt
git add file1.txt file2.txt
git commit -m "MASTER C1"
sleep 2

echo "new line here" >> file1.txt
echo "new file" > file3.txt
git add file3.txt
git commit -a -m "MASTER C2"
sleep 2

echo "bug fixes" >> file1.txt
echo "bug fixes" >> file3.txt
git commit -a -m "MASTER C3"
sleep 2

git branch feat-zoo

echo "MAGICAL" >> file2.txt
git commit -am "MASTER C4"
sleep 2

git checkout feat-zoo
git $ACT master
echo "new end" >> file3.txt
git commit -am "BR C1"
sleep 2
echo "**END" >> file2.txt
git commit -am "BR C2"
sleep 2

git checkout master
sed -i 's/blah blah/WHEEE/' file1.txt
git commit -am "MASTER C5"
sleep 2

git checkout feat-zoo
git $ACT master

echo "FINAL" >> file1.txt
git commit -am "BR C3"
sleep 2

git checkout master
echo "Done" > signoff
git add signoff
git commit -m "MASTER C6"
sleep 2

git merge feat-zoo

2 个答案:

答案 0 :(得分:2)

当我运行该脚本时(对sed命令进行一次更改,添加-e,以便它在我的框中执行正确的操作,并将-m "Merge branch 'feat-zoo'"添加到合并中,所以我不必手动完成编辑会话),无论是否有“睡眠2”,它都能正常工作。

$ git log --graph --decorate --oneline --all
*   5847d16 (HEAD, master) Merge branch 'feat-zoo'
|\  
| * 42eb472 (feat-zoo) BR C3
| * 28f0d24 BR C2
| * 967e122 BR C1
* | 136b44a MASTER C6
|/  
* 437cf27 MASTER C5
* 4c0edac MASTER C4
* 6dbf80e MASTER C3
* 95c61ec MASTER C2
* 597d9ba MASTER C1

如果我创建一个孤立分支并将其合并,那也可以。

您使用哪种观看者查看这些内容?我怀疑它正在尝试绘制图形,并使用提交时间戳放置提交,并且因为BR C1的父级是MASTER C5而感到困惑,但它已经在上面绘制了MASTER C5,所以它没有“下方”BR C1以连接下一行。当用完绘图时它就会停止绘制,给你看到的输出。尝试上面的git log命令;我想它会告诉你我得到的东西。

(换句话说,它看起来像是查看器中的错误,而不是git。)

答案 1 :(得分:1)

哇。这意味着,当您运行shell脚本来模拟git操作时,请在提交之间插入一些sleep 2语句。 :)显然所有这些都跑得太快,以至于混淆了git的地狱。