在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Linux  HTML/ GIT如何修改author date和commiter date

GIT如何修改author date和commiter date

需要使用gitlab的merge request方式,在嘗試new Merge Request時(shí)gitlab頁(yè)面報(bào)錯(cuò),經(jīng)過(guò)查看gitlab后臺(tái)日志,顯示
“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'”

看了這個(gè)commit ,author_date和commiter_date是2099年(沒(méi)錯(cuò),這個(gè)項(xiàng)目之前是開(kāi)放修改的,開(kāi)發(fā)人員為了自測(cè)改了本地日期,commit時(shí)忘了改回來(lái)了)??傊?,這個(gè)項(xiàng)目上有一些commit都是這兩個(gè)日期在當(dāng)前日期之后的,估計(jì)是這個(gè)日期影響了compare,現(xiàn)在嘗試把它們改回來(lái)。

查看了很多資料,覺(jué)得git filter-branch應(yīng)該能夠解決這個(gè)問(wèn)題,嘗試了如下腳本:

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'     

然而并沒(méi)有起作用,腳本正常運(yùn)行完,日期還是沒(méi)有變化。
有沒(méi)有處理過(guò)類(lèi)似問(wèn)題的兄弟望賜教!

回答
編輯回答
夏木

自己來(lái)答吧,最后選用了這個(gè)辦法:

git rebase -i xxxxxx^

其中xxxxxx是錯(cuò)誤的提交的commit_hash,然后在出現(xiàn)的pick編輯器中,將xxxxxx前面的pick改為edit;
這樣在做rebase時(shí),遇到指定的commit,會(huì)停住進(jìn)行交互,執(zhí)行下面命令對(duì)commit進(jìn)行編輯:

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

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

又搗鼓了很長(zhǎng)時(shí)間,用java寫(xiě)了個(gè)程序,執(zhí)行shell命令,根據(jù)命令的不同的輸出進(jìn)行不同的輸入,還在測(cè)試中,就不展開(kāi)說(shuō)了。

2017年6月2日 03:10