簡體   English   中英

關於重寫歷史的 Git diff

[英]Git diff on rewriting history

我很想知道在這種情況下 Git diff,我在 Git 文檔中找不到

假設在分支 A 上,我有三個提交
Branch A: Commit 3 <-- Commit 2 <-- Commit 1

Commit 3是最新的分支。

  1. 現在,如果我們重寫提交歷史,即重新設置最近的Head~2提交並將它們壓縮為一個,那么分支看起來像

Branch A: Commit 3' <-- Commit 1
Commit 3'包括commit 3和rebase后的commit 2。

現在,如果我運行命令git diff commit3 commit3'會起作用嗎? 如果是,那么它為什么會在 diff 中顯示什么變化?

  1. 如果我們刪除commit 3並在 rebase 后將commit 2保留為最新的 master。 那么git diff commit 3 commit 2會顯示什么?

注意:這里提交 3 已被刪除,如果發現差異,git 將如何跟蹤?

它會起作用,因為每次提交實際上是您工作存儲庫當前狀態的快照,無論是什么使此存儲庫進入此特定狀態。 因此,您可以將任何修訂版與其他任何修訂版進行比較。

如果您只是簡單地重新定位以合並您的提交,則commit3commit3'之間應該沒有區別,因為它們的最終狀態是相同的。

這與“應用更改”不同,例如,cherry-pick 會這樣做。 在后一種情況下,首先通過將所選提交與其父提交進行比較來獲得變更集,然后將差異結果應用於當前工作目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM