2013-02-03 22 views

回答

37

一個git SHA散列是從不同的信息來計算:

  1. 它是指;基本上,提交出現的分支中的存儲庫的當前內容。
  2. 家長提交的SHA
  3. 提交消息
  4. 作者信息:名稱,電子郵件和時間戳。
  5. 提交者信息:姓名,電子郵件和時間戳。

即使您編輯櫻桃選擇的提交以使樹,提交消息,作者和提交者信息完全相同,父提交的SHA(或提交,如果處理合並提交)將永遠不同。因此,在挑選櫻桃之後,您將無法生成相同的SHA哈希值(除非發現SHA衝突;))。

+0

感謝您提供有用的信息:)事實上,我使用'git branch master remote/master'命令創建了我的分支並保持最初的SHA ...然後我重置爲特定的提交,現在我想重置到另一個更近的一個,但它會回到另一個點上的回購日誌... – blameless75

+0

事實上,當我嘗試cp提交我有一個「刪除我們」的錯誤有關的所有文件...這很奇怪... – blameless75

+0

編輯:無視我以前的評論,我混淆了遠程的... – blameless75

12

SHA提交哈希由存儲庫的狀態構成,使用整個歷史直至提交(分支不包括在內)。這意味着,除非整個歷史記錄相同,否則無法保留原始散列選擇,在這種情況下,櫻桃挑選將毫無意義。

+0

它實際上是repo日誌上的下一個提交,我嘗試將我的本地分支重置爲所述提交的SHA,但是然後我的分支位於完全不同的位置... – blameless75

+0

好吧,更確切地說,SHA哈希不會表示整個存儲庫_的狀態,但是_commit及其整個歷史_。該存儲庫可能有不同的分支機構和提交... – siegi

+0

@siegi謝謝,補充。 「在那個時間點整個資源庫的狀態」是我心中想的,但是,分支也被排除在外 – eis

3

根據您對其他答案的意見,我認爲你只是想重置一些遠程提交。您可以使用git reset --hard <SHA>來執行此操作。請注意,這將丟棄工作目錄中的所有(未提交)更改,並且您在此分支中完成的所有提交將不再可訪問。

如果這不是你想要的(或者你不確定),請更清楚地描述你做了什麼,你想做什麼或者你想做什麼。

相關問題