在git中,我可以通過說HEAD^
或HEAD~1
來指定以前的修訂版本。那麼去其他方式呢?假設我在版本X上,並且我做了git checkout X^
。我該如何回去?`git diff HEAD ^`的反義詞是什麼?
類似git checkout X+
?
在git中,我可以通過說HEAD^
或HEAD~1
來指定以前的修訂版本。那麼去其他方式呢?假設我在版本X上,並且我做了git checkout X^
。我該如何回去?`git diff HEAD ^`的反義詞是什麼?
類似git checkout X+
?
你無法真正做到這一點。 git中的歷史記錄是一個有向的非循環圖 - 每個提交包含對其父母的引用,但是父母沒有引用他們的孩子。
這裏的問題應該會變得很明顯,當你考慮你創建多個分支的提交時。你的意思是「下一個承諾」?和父母一起,你可以數字化(一個正常的合併提交有第一個和第二個父母),但你如何與孩子做這件事?即使你知道你在想什麼分支上(例如,你已經簽出master~4
,現在你想看看master~3
)它不是明確的 - 你可以在這樣的情況:
- X (HEAD) - o - o - o - Y (master)
\ /
o - o - o ----------
這就是說,在簡單的情況下,你可以做這樣的事情:
git checkout $(git rev-list HEAD..master | tail -n 1)
清楚,會很好地工作線性的歷史。與合併... rev-list
作品從現在到過去的歷史,跟着它落後。我相信它首先跟在第一個父母身後,所以最後打印的東西將是在跟隨所有最後父母后發現的HEAD
之後的提交。
編輯:這的確假設你知道你想向哪個分支前進。如果你不......嗯,你幾乎看卡上的所有裁判對於具有當前HEAD父提交 - 大概grepping的git rev-parse
輸出:
git rev-list --all --children | grep ^$(git rev-parse HEAD)
然後搶在對方從SHA1該行(使用awk,無論)。你將不得不手動檢查或作出任意選擇,如果有多個結果,但...
我不認爲這是可能的,因爲一個Git提交只存儲它的父提交,但不是它的子。
想象一下提交會存儲它的子項。如果您要在此提交中創建多個分支,會發生什麼情況,因此多次提交將此提交作爲父項?那麼什麼是「頭+」?這是模棱兩可的,錯誤的。
在我從數據結構中知道的內容中講到: Git將歷史存儲爲單鏈表,而您的操作需要雙鏈表。
這比這更糟糕 - 即使父母知道孩子,也可以看到我關於歧義的答案。 – Cascabel 2010-08-24 14:06:39
據我可以告訴有沒有象徵性的方式來引用提交的孩子。
剛纔我可以給你的最好的是--children
選項git rev-list
。在這裏,我要求最近四次提交的內容相當漂亮,並附上有關其子女的信息。請注意,在每個條目(除最近的)的「提交」行上,都有一個額外的提交編號,它指定該節點的子節點。你可以通過手動或通過一些shell腳本來獲取孩子。
$ git rev-list --children --pretty HEAD~3...
commit 20dba296ad1d48ec90f9319e2c13b245e849f698
Author: Somebody <[email protected]____.net>
Date: Thu May 6 19:10:38 2010 -0400
Support for complex trig/pow.
commit 9d42b5bac1721a847a39c25672e577c7101c8ff0 20dba296ad1d48ec90f9319e2c13b245e849f698
Author: Somebody <[email protected]____.net>
Date: Wed May 5 21:55:07 2010 -0400
Fix doc formatting warning.
commit 72bed3baa9df71cb224dfa8388b5969d50f5567c 9d42b5bac1721a847a39c25672e577c7101c8ff0
Merge: b8244cb61491c9cdb83d36e57f8eb49773e44f6b 899c3dd3f9f419f200b84ca0abe59d7ac3d5bb53
Author: Somebody <[email protected]____.net>
Date: Wed May 5 21:54:59 2010 -0400
Merge branch 'master'
commit 899c3dd3f9f419f200b84ca0abe59d7ac3d5bb53 72bed3baa9df71cb224dfa8388b5969d50f5567c
Author: Somebody <[email protected]____.net>
Date: Wed May 5 21:19:11 2010 -0400
Fix link
你真的想要HEAD的對立面嗎?還是隻想「回去」?(你可以回頭看看HEAD @ HEAD @ {1}。) – nschum 2010-08-24 14:10:26