簡體   English   中英

為 Git 存儲庫中的所有提交重命名文件

[英]Rename file for all commits in a Git repository

我想為 Git 存儲庫中的所有提交重命名一個文件。 這是我嘗試過的:

git filter-branch --index-filter 'git mv -k <old name> <new name>' HEAD

此命令遍歷存儲庫中的所有提交,但最終顯示以下消息:

警告:Ref 'refs/heads/master' 未更改

這意味着什么都沒有改變。 這里出了什么問題?

請注意,我想要重命名的文件在第一次提交時不存在。 因此,如果我不在git mv中使用-k ,我的意思是如果我使用:

git filter-branch --index-filter 'git mv <old name> <new name>' HEAD`

Git 在嘗試第一次提交時會出錯,說“錯誤的來源...”。

我終於通過使用解決了我原來的問題:

git filter-branch --tree-filter '
if [ -f <old name> ]; then
  mv <old name> <new name>
fi' --force HEAD

現在最好使用filter-repo - https://github.com/newren/git-filter-repo

git filter-repo --path-rename full/path/to/file.old:full/path/to/file.new

看我自己的博客頁面: http://ben.goodacre.name/tech/Rename-file-for-all-previous-commits-in-Git

對於任何對重命名文件感興趣的人 - git rebase -i將工作得很好。 在 rebase 中包含創建文件的提交,用edit標記它,然后重命名文件。 Git 會正確地將下一次提交應用到這個文件。

暫無
暫無

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

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