簡體   English   中英

git 模仿來自其他存儲庫的舊提交

[英]git mimic old commit from other repository

為什么

在我們公司,我們開始使用一些開源代碼並開始修補它。 我現在想公開這些更改,所以我想用正確的作者和作者日期應用這些更改(我不想因為我沒有做的工作而受到贊揚)。

問題

  • company-repo中,我提交了我想模仿的123456789
  • new-repo中,我准備了一個提交(使用git add -p )。

現在我想創建一個模仿來自company-repo的提交123456789的提交,但是在new-repo中創建這個提交。

想法

  • git commit -C可以從另一個提交中獲取 git 提交消息,但這失敗( could not lookup commit
  • 因為這是跨兩個不同的存儲庫可能會創建一個補丁? 但是由於文件名已更改,這將很復雜
  • 只是解析所需的信息並重用? 應該復制什么? 時間戳,提交消息,其他?

我不知道是否有更簡單的方法可以做到這一點,但我會解析authormessagetimestamp並在提交時重用它們。

正確設置這兩個變量:

OLDREPO=/path/to/company-repo
HASH=123456789 # hash of commit to mimic

然后您可以從舊提交中提取值:

DATE=$(git --git-dir=$OLDREPO/.git/ show --no-patch --no-notes --pretty='%cd' $HASH)
AUTHOR=$(git --git-dir=$OLDREPO/.git/ show --no-patch --no-notes --pretty='%an <%ae>' $HASH)
MESSAGE="$(git --git-dir=$OLDREPO/.git/ show --no-patch --no-notes --pretty='%B' $HASH)"

並將它們用於您的新提交:

git commit --author="$AUTHOR" --date="$DATE" -m "$MESSAGE"

注意:我沒有故意設置GIT_COMMITTER_DATE 從技術上講,提交是今天創建的,而作者很久以前就編寫了他的代碼。

暫無
暫無

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

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