我经常使用mv
系统命令重命名文件,忘记使用git mv
来保存文件历史记录:
~/gitproj $ mv myfile.foo newname.foo
当我在提交之前意识到它时,我知道修复它的唯一方法是执行以下操作:
~/gitproj $ mv newname.foo myfile.foo # Coming back to the old name
~/gitproj $ git mv myfile.foo newname.foo # Moving forth again, but with git
是否有更好的方法,例如只向git
提供文件被移动的信息?
会是这样的:
~/gitproj $ git mv --cached myfile.foo newname.foo # a pseudo git command
正如AndreasGrapentin所写:
git add .
让git(auto)检测重命名的所有文件,即使它们已被修改。但是这个命令将整个目录添加到索引...
有没有办法,即使是在较低级别,只能为一个文件更改此信息?
答案 0 :(得分:2)
因为git mv
的效果不过是序列
mv myfile.foo newname.foo
git rm --cached myfile.foo
git add newname.foo
无论如何,你可以简单地提供剩下的两个操作
git rm --cached myfile.foo
git add newname.foo
完成此举。但是,这并不能从您的后退然后git-move变通方法中保存一个命令。
Afaik,这两个命令不能通过git别名捆绑:你需要为两个不同的命令提供两个名称,这与别名替换不兼容。因此,如果您绝对希望能够使用单个命令执行此操作,则需要编写shell脚本或函数。使用shell脚本,如果你绝对想把它称为git命令,你可以在~/.gitconfig
中对它进行别名,但如果我是你,我真的不会烦恼。