簡體   English   中英

指定Git提交哈希

[英]Specifying Git commit hash

我可以指定Git提交哈希,而不是讓Git生成它嗎?

它甚至可能嗎? 我沒有在Git文檔或在線中找到任何方法。


對於某些背景:我正在以編程方式從私有庫重新創建一個新的Git公共存儲庫。 我需要對每個提交進行大量更改以刪除機密信息。 但我想保留提交ID。

git commit hash是一個加密校驗和,它是根據存儲庫的狀態計算出來的,包括存儲庫中所有文件的哈希值,前一次提交的哈希值,當前日期和時間等。

無法手動指定此項。

更多信息,請參閱此問題

您可以使用git cat-file -p da500aa4f54cbf8f3eb47a1dc2c136715c9197b9獲取的提交內容(匿名;))(替換為您的某個提交的sha1):

tree 48038c4d189536a0862a2c20ed832dc34bd1c8b2
parent f0bb5942f47193d153a205dc089cbbf38299dd1a
author Firstname Lastname <my@mail.com> 1513256382 +0100
committer Firstname Lastname <my@mail.com> 1515152927 +0100

This is a commit message

如果其中一個數據發生更改,則所有sha1都會更改。

  • tree是根據文件和目錄內容計算的sha1。

  • Parent是父提交哈希。

  • 請注意,內部也有日期,因此如果您在不同時刻執行完全相同的提交,則sha1也會更改

PS:您可以繼續使用命令git cat-file -p繼續探索tree並更好地理解git存儲數據的方式。

我相信這是可能的,雖然它需要一些時間和工作,而且是一個黑客。 確實,哈希是由以下值生成的:

  • 內容
  • 提交日期
  • 先前提交的ID
  • ...

但是,如果您可以犧牲其中一個值的一致性,就可以完成。 這是一個例子: https//github.com/vog/beautify_git_hash
這是一個腳本,它進行提交,然后正在尋找一個特定的日期來使git hash成為你正在尋找的那個,然后用這個日期進行修改。

如果您對提交進行更改,則ID將會更改。(它們取決於提交內容本身,以及其中的更改)。

所以不行。

暫無
暫無

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

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