在父提交的位置显示stashes

时间:2015-02-18 17:34:20

标签: git git-log git-stash

我正在使用以下命令列出我的所有提交:

git log --oneline --graph --decorate --all

这只显示了我的藏匿处的一个条目。此条目位于我开始存储的最后一次提交的位置。

是否也可以在父提交时显示每个存储?

说我有以下git-log:

* 063b893 (HEAD, master) first commit
* 4e6efb9 initial commit

添加藏匿后:

*   51eb834 (refs/stash) WIP on master: 063b893 first commit
|\  
| * dfafaaf index on master: 063b893 first commit
|/  
* 063b893 (HEAD, master) first commit
* 4e6efb9 initial commit

添加第二个存储后(问题1 :仅显示最后一个存储):

*   1e9b384 (refs/stash) WIP on master: 063b893 first commit
|\  
| * 4862a3d index on master: 063b893 first commit
|/  
* 063b893 (HEAD, master) first commit
* 4e6efb9 initial commit

添加第二次提交后,存储仍显示在正确的位置:

* c09a3fc (HEAD, master) second commit
| *   1e9b384 (refs/stash) WIP on master: 063b893 first commit
| |\  
|/ /  
| * 4862a3d index on master: 063b893 first commit
|/  
* 063b893 first commit
* 4e6efb9 initial commit

添加另一个存储并提交后(问题2 :在first commit之后直接创建的存储未显示。显示的唯一存储是second commit之后):

* d86c140 (HEAD, master) third commit
| *   4efd3e0 (refs/stash) WIP on master: c09a3fc second commit
| |\  
|/ /  
| * 5065abe index on master: c09a3fc second commit
|/  
* c09a3fc second commit
* 063b893 first commit
* 4e6efb9 initial commit

我希望看到:

* d86c140 (HEAD, master) third commit
| *   4efd3e0 (refs/stash) WIP on master: c09a3fc second commit
| |\  
|/ /  
| * 5065abe index on master: c09a3fc second commit
|/  
* c09a3fc second commit
| *   1e9b384 (refs/stash) WIP on master: 063b893 first commit
| *   51eb834 (refs/stash) WIP on master: 063b893 first commit
| |\  
|/ /  
| * 4862a3d index on master: 063b893 first commit
|/  
* 063b893 first commit
* 4e6efb9 initial commit

1 个答案:

答案 0 :(得分:0)

问题是,--all只是查看所有引用,而stash只是一个引用,提供 (最新/当前)存储。

所有其他藏匿处在哪里?他们隐藏在refs/stash reflog中。 --all不提取reflog,--decorate不检查reflog。

你可以通过明确地告诉他们来显示其他存储:

git log --oneline --graph --decorate --all stash@{1} stash@{2}

(假设有三个总数,​​--all得到一个,我们在这里添加其他两个;它需要一些脚本或类似于编程计数stash reflog条目并添加适当的数量stash@{n}项目,但他们不会得到装饰品。