如果您使用gitk --all
,您可以從所有分支中看到所有提交的回購。我想要的東西除了只有給定提交的後代。如何獲得/列出/查看所有使用git(或gitk)提交的後代?
回答
一個承諾只知道它的父母(因此一直向上),但沒有關於其子女/後代的線索。您必須使用A..B這樣的符號來查找它。
例如,如果你想找到在提交當前分支,因爲給定犯,你可以做這樣的事情:
git rev-list A..
'gitk --all'必須以某種方式工作。看起來有可能至少將它編碼爲第一個'gitk --all',然後忽略沒有給定提交的每個提交作爲其父。 – Pistos
我想這可能會做你想要什麼。在各分公司所有的提交,有A作爲祖先:
gitk --all --ancestry-path A..
簡而言之:
git log --all BRANCH~1..
在細節和例子:這是一個倉庫的整個樹我剛剛創建:
$ git log --graph --oneline --decorate --all
* e3972be (HEAD, a) a-6
* 2707d79 a-5
* cdea9a7 a-4
| * 65b716e (c) c-5
| * ebe2a0e c-4
|/
| * 2ed9abe (b) b-4
|/
* ace558e (master) 3
* 20db61f 2
* 3923af1 1
除了--all
,另一件事是顯而易見的:master
- >HEAD
:
$ git log --graph --oneline --decorate master..
* e3972be (HEAD, a) a-6
* 2707d79 a-5
* cdea9a7 a-4
所以,我試圖將它們結合起來,它幾乎了我了我們想要的:
$ git log --graph --oneline --decorate --all master..
* e3972be (HEAD, a) a-6
* 2707d79 a-5
* cdea9a7 a-4
* 65b716e (c) c-5
* ebe2a0e c-4
* 2ed9abe (b) b-4
但不幸的是,這並不表明分支之間的關係,因爲分支我們要求約被省略。因此,我們必須使用日誌從master
父像這樣:
$ git log --graph --oneline --decorate --all master~1..
* e3972be (HEAD, a) a-6
* 2707d79 a-5
* cdea9a7 a-4
| * 65b716e (c) c-5
| * ebe2a0e c-4
|/
| * 2ed9abe (b) b-4
|/
* ace558e (master) 3
噹噹! (我不知道這是否在過去不起作用,但只是在以下情況下:我在git版本1.7.1上)
編輯2017-11-17 - 感謝STW真正的顯示這個問題:獨立的樹會搞砸了。此輸出中將包含完全獨立於master
的提交。從上述回購的副本開始,這是我的最後一個命令將輸出:
$ git checkout --orphan z
Switched to a new branch 'z'
$ git commit --allow-empty -m'z-1'
[z (root-commit) bc0c0bb] z-1
$ git commit --allow-empty -m'z-2'
[z 1183713] z-2
$ git log --graph --oneline --decorate --all master~1..
* 1183713 (HEAD -> z) z-2
* bc0c0bb z-1
* 6069f73 (a) a-6
* 654d106 a-5
* a218c59 a-4
| * 338432a (c) c-5
| * 2115318 c-4
|/
| * 43a34dc (b) b-4
|/
* ce05471 (master) 3
的z
分支,創建作爲一個孤兒,與master
沒有共同的歷史,所以z-1
和z-2
應已排除但沒有。這是--ancestry-path
的用途,我現在得到。包括將排除分支z
:
$ git log --graph --oneline --decorate --all --ancestry-path master~1..
* 6069f73 (a) a-6
* 654d106 a-5
* a218c59 a-4
| * 338432a (c) c-5
| * 2115318 c-4
|/
| * 43a34dc (b) b-4
|/
* ce05471 (master) 3
爲了完整,甚至因爲它已經有了--ancestry-path
,目前頂級的答案沒有正確顯示分支的關係,因爲它排除在master
自己的承諾:
$ git log --graph --oneline --decorate --all --ancestry-path master..
* 6069f73 (a) a-6
* 654d106 a-5
* a218c59 a-4
* 338432a (c) c-5
* 2115318 c-4
* 43a34dc (b) b-4
我試着擺弄這個變化,但它似乎並不能顯示我想要[用gitk]。例如,假設你創建了一箇中介子分支,並從那裏創建了3個孫子分支。只有那個家族的分支才能顯示gitk,而不是主人或其他任何人? – Pistos
@Pistos所以使用上面的,當我使用'gitk --all master..'(而不是'git log --all master〜1..' - 所以,要使用除master以外的分支,請嘗試'gitk --all branchname..'(包括兩個點) – Izkata
@Pistos我現在也注意到我的評論與jsvnm的答案几乎一樣,除了我不' t很明白'--ancestry-path'和爲什麼它是必要的 – Izkata
- 1. sonar/git查看所有提交者
- 2. 在查看時提交gitk分頁
- 3. 如何列出引用提交或其後代的所有標記?
- 4. 如何獲得指向git中的提交的所有參考?
- 5. 如何獲得Git提交用戶
- 6. 如何獲得提交後提交mercurial?
- 7. 如何讓Git Extensions瀏覽器顯示所有提交像gitk --all
- 8. 如何查找所有提交git的所有重命名?
- 9. 如何列出自特定GIT提交後不會更改的所有文件
- 10. git:在檢出舊的提交後,我如何看到下一個提交?
- 11. 如何從短散列獲得完整的git提交散列?
- 12. 使用TortoiseGit刪除所有提交後的所有提交
- 13. 如何查看自某個提交以來所有git修改的摘要
- 14. git diff最後提交加上所有未提交的更改?
- 15. 如何使用libgit2從git倉庫中獲得HEAD的最後一次提交?
- 16. 如何在github中查看用戶X的所有提交(代碼)?
- 17. 如何獲得所有文件* I *在某個日期之後已經提交給Git(GitHub回購)的列表?
- 18. 使用vimdiff查看所有`git diffs'
- 19. 在git中查找所有未提交的提交?
- 20. 查找所有符合特定「提交次數」的git提交
- 21. 如何獲得觸及給定代碼行(git)的提交列表
- 22. Git列出從特定計算機推送的所有提交
- 23. Git log:列出所有父母提交的內容
- 24. git push non所有提交
- 25. 如何使用Xcode列出爲提交而更改的所有文件並查看每個文件的更改?
- 26. 如何查看日期範圍內的所有提交TortoiseCVS
- 27. 我如何查看GitHub上所有提交的分支?
- 28. git看提交id的提交日誌
- 29. gitk可以顯示除給定作者的所有提交嗎?
- 30. Git日誌 - 如何列出所有不以特定單詞開頭的提交
雖然manojlds的第一句話是正確的,但這並不是全部的真相:可能會檢查某件事物是否可以檢查每個參考文獻是否在其祖先中有特定的提交,然後顯示從那些參考文獻開始的歷史記錄。 – Cascabel
[獲取給定提交的所有子代的列表]的可能重複(http://stackoverflow.com/questions/2613935/getting-a-list-of-all-children-of-a-given-commit) – jthill