如何在已经用bash / mv移动文件后在Git中“重命名”文件

时间:2016-10-06 20:44:47

标签: git

我经常使用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)检测重命名的所有文件,即使它们已被修改。但是这个命令将整个目录添加到索引...

有没有办法,即使是在较低级别,只能为一个文件更改此信息?

1 个答案:

答案 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中对它进行别名,但如果我是你,我真的不会烦恼。