我的問題是,是否可以在功能分支 B 中參考分支 A 中所做的更改,而無需重復提交或暫存更改?
然后,當您將此分支 B 合并到 A 時,git 會識別出此參考的提交已經在 A 上并且不執行任何操作。有這個命令嗎?
我知道cherry-pick,rebase而且merge,但是這些命令并不能解決這個問題。
我什至不知道 git 架構是否可行,所以我感謝所有能幫助我的人。
uj5u.com熱心網友回復:
有一些小的例外,所有的這是在Git的是一組在Git修訂的。歷史就是提交;提交是歷史;這就是全部。
這意味著對你的問題的直接回答——一旦將它改造成適合 Git 的,那就是;從你的意思來說,沒有任何分支,甚至沒有任何更改,因為提交是快照 - 是“否”。您所能做的就是進行另一次提交,或多次提交,以添加新的保存狀態。
次要的例外包括分支名稱之類的內容:每個名稱存盤一個哈希 ID,從中我們可以找到所有其他提交。這形成了一個圖,特別是有向無環圖,其中分支和其他名稱作為進入其他自包含圖的入口點。這就是我們在存盤庫中找到提交的方式。
就存盤庫中的檔案而言,它們存在只是因為它們包含在提交中。每個提交都有每個檔案的完整快照(盡管以奇怪的、Git 化的、去重的形式存盤,因此共享同一檔案的提交實際上確實共享了該檔案:它在所有提交中,但一切始終都已完成具有用于共享的間接層)。所以名稱查找特定的提交,這些提交查找其他提交和包含的檔案。
當你使用時git merge,你會得到:
- 真正的合并:添加到圖中的新提交(添加更多歷史記錄:它到前一個提交的向后鏈接是到兩個前一個提交的一對鏈接),或
- 什么都沒有:一個假的快進合并,只是移動一個分支名稱;或者
- “擠壓合并”通過
git merge --squash:Git 執行與真正合并相同的作業,但隨后停止并讓您進行新的提交。新提交不會鏈接到兩個提交。
所以只有在假的情況下——實際上只是“移動一個分支名稱”——你不添加任何提交;在一種特殊情況下,您可以使用那個來回答您的問題“是”。在這種情況下,您最終會選擇同一個提交的兩個分支名稱;一次提交具有正確的快照并向后連接到所需的先前提交,因此就足夠了。但否則你將不得不添加一個提交。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/362470.html
