0

除了截图,我无法解释:

gitg 图

这到底是什么意思?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
4

2 回答 2

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。)

于 2013-09-04T19:42:47.890 回答
1

哇。这意味着,当您运行 shell 脚本来模拟 git 操作时,sleep 2在提交之间插入一些语句。:) 显然所有这些都跑得如此之快,以至于把 git 搞糊涂了。

于 2013-09-04T18:31:36.387 回答