爲什麼在所有顯示pro git book箭頭提交隊列的圖像上都會導致相反的方向?ProGit書籍中的箭頭方向
3
A
回答
4
這是顯示父母的關係。在Git中,特定的提交知道它的父項,但不一定關於它的子項。 (顯然,這些信息可以根據家長的聯繫中得到,但我不認爲這是直接存儲在commit對象。)
6
箭頭體現在這裏代表提交的在歷史的方向,接着一個DAG, Directed Acyclic Graph Git(從最近到最早)。
這表示是不是一個「完美」的一個,爲Eric Sink details in his article:
一個關於基於DAG的版本控制工具的最酷的事情是,DAG是合併歷史的表達。我們將DAG中的箭頭解釋爲「我有這個」。
所以,當談到時間做從5B在合併到(一)分支,我們可以使用DAG中的信息,要知道,3B和2b已經完成
同一篇文章詳細介紹了代表性的限制:
但DAG只是一種實現,合併的歷史,它肯定是不完美的。
版本控制中的箭頭DAG從子項到父項。它告訴我們該孩子包含父母中的所有更改。和它的祖父母。和它的曾祖父母。等等。
但是,如果這不是事實呢?
請看下面的圖片:
我想創建變更4.
我想在變更1開始,然後我想申請從3變更的變化,但不是變更集2中的東西。
此操作有時稱爲「挑剔」。我不想將所有更改從一個分支合併到另一個分支。我只想採用一個變更集(或變更集的一部分)並將其作爲補丁應用於其他某個地方。我該如何在DAG中表示這一點?
我不行。
- 我可以畫一個箭頭從4到3(紅色如上所示)。這可以正確地說4包含3中的變化,但它會不當地聲稱4包含變化2.
- 或者,我可以不繪製箭頭。實際上,我的合併歷史會簡單地不記錄的事實,4是真的3轉換成一個補丁,並應用於1
在這兩種情況下,壞事要發生下一次,我從一個分支合併其他:
- 如果我繪製躺在箭,我不會給應用變更2的機會,因爲合併歷史認爲我已經做到了。
- 如果我不繪製任何箭頭,該工具將指望我處理變更集3,因爲沒有合併歷史記錄我已經完成的事實。
這些問題都不足以造成晚間新聞災難,但仍然如此。
這就是爲什麼a rebase is never far經過櫻桃挑選操作後,爲了找回更經典的DAG。
相關問題
- 1. 方向箭頭
- 2. iPhone方向箭頭?
- 3. Python箭頭方向
- 4. 特定方向的箭頭
- 5. flexslider方向箭頭響應
- 6. Siri Remote。方向箭頭
- 7. 改變箭頭方向
- 8. Android MapView方向箭頭
- 9. 更改geom_spoke中箭頭的方向
- 10. 全寬flexSlider與中心方向箭頭
- 11. Python中的向上箭頭?
- 12. UIPopoverController允許的箭頭方向發出
- 13. 控制的Graphviz箭頭方向
- 14. 8個方向的Unicode/ASCII箭頭?
- 15. OpenCV 2.4.8(Python)確定箭頭的方向
- 16. 來自Data.frame的R箭頭/方向圖
- 17. Corona SDK箭頭顯示球的方向?
- 18. 帶方向箭頭的背景
- 19. setDisplayHomeAsUpEnabled()+向上箭頭?
- 20. html向上向下箭頭
- 21. 將箭頭總是指向我在Android中的方向MapView
- 22. 彈出箭頭方向無法確定
- 23. Java圖形2D UI箭頭方向
- 24. 箭頭標籤方向在GGPLOT2
- 25. 麪包屑箭頭RTL方向
- 26. 地理位置api與方向箭頭
- 27. Android主頁按鈕箭頭方向
- 28. AutoCompleteComboBox箭頭向上/向下箭頭鍵滾動列表
- 29. 向下箭頭的HTML
- 30. 指向箭頭的陰謀
Correct - 提交對象的內容是提交的元數據(作者,提交者,消息),樹(目錄樹的內部表示)以及父提交的SHA1。也就是說,一個承諾通過SHA1「指向」其父母(而不是其子女),正如箭頭所示。 – Cascabel 2010-04-20 15:24:29
這個箭讓我發狂。仍然理解爲什麼這些信息對於所有圖像都是必需的。 – 2010-04-20 15:36:40
這些箭頭很有用,因爲您可以通過圖表中的箭頭告訴很多關於歷史的信息。例如,查看提交C3,C4和C5。從箭頭中可以看出,C3和C4共享一個以C2開始的共同歷史記錄(即它們每個都從C2分支出來),C5向我們顯示它是C3和C4合併的結果,這意味着它包含C3和C4的變化,以及這兩個提交的共同歷史。 – mipadi 2010-04-20 15:48:15