亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

GIT如何修改author date和commiter date

GIT如何修改author date和commiter date

慕桂英4014372 2018-07-08 20:22:16
需要使用gitlab的merge request方式,在嘗試new Merge Request時gitlab頁面報錯,經過查看gitlab后臺日志,顯示“Rugged::OdbError (Failed to parse commit aef3846d6401d68asdfsdf281c39cb584b812d - cannot parse commit time):app/services/compare_service.rb:11:in `new'app/services/compare_service.rb:11:in `execute'app/controllers/projects/compare_controller.rb:13:in `show'”看了這個commit ,author_date和commiter_date是2099年(沒錯,這個項目之前是開放修改的,開發人員為了自測改了本地日期,commit時忘了改回來了)??傊?,這個項目上有一些commit都是這兩個日期在當前日期之后的,估計是這個日期影響了compare,現在嘗試把它們改回來。查看了很多資料,覺得git filter-branch應該能夠解決這個問題,嘗試了如下腳本:git filter-branch -f --env-filter '    if [ $GIT_COMMIT = aef3846d6401d68asdfsdf281c39cb584b812d ]   then        export GIT_AUTHOR_DATE="Mon Jun 25 14:13:00 CST 2018"        export GIT_COMMITER_DATE="Mon Jun 25 14:13:00 CST 2018"    fi'然而并沒有起作用,腳本正常運行完,日期還是沒有變化。有沒有處理過類似問題的兄弟望賜教!
查看完整描述

1 回答

?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

自己來答吧,最后選用了這個辦法:

git rebase -i xxxxxx^

其中xxxxxx是錯誤的提交的commit_hash,然后在出現的pick編輯器中,將xxxxxx前面的pick改為edit;
這樣在做rebase時,遇到指定的commit,會停住進行交互,執行下面命令對commit進行編輯:

GIT_COMMITTER_DATE='2018-07-12 00:00:00' GIT_AUTHOR_DATE='2018-07-12 00:00:00' git commit --amend --no-edit --date '2018-07-12 00:00:00'

修改commit的日期,然后git rebase --continue

完成rebase后 git push --force

說起來簡單,實際實現起來,由于提交歷史太多了,幾千條,其中日期錯誤的零零散散幾十條,所以git rebase -i 的時候選取最早一次出現的錯誤commit,然后在編輯器里把需要修改日期的commit都改為edit,再進行交互,由于可能有合并沖突的,可能有新增文件的需要git add .的,幾千條中需要不停的人機交互......

又搗鼓了很長時間,用java寫了個程序,執行shell命令,根據命令的不同的輸出進行不同的輸入,還在測試中,就不展開說了。


查看完整回答
反對 回復 2018-07-14
  • 1 回答
  • 0 關注
  • 1484 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號