我真的需要git中的这个命令。
hg addremove所以现在看看场景,看看mercurial是如何在这里拯救我的:
我在这里有一些目录var/htdocs/static/static。我不小心把文件移到了错误的位置(使用git-mv)。不管怎样..。现在我手动移动了一些文件夹:
mv static static2
mv static2/static ./也许我在这里也改了一些文件...现在一切都好了..。所以现在git不知道发生了什么?他如何在不通知的情况下跟踪文件的移动,就像mercurial对addremove所做的那样。
例如,现在使用mercurial我可以这样做:
hg addremove --similarity 80%就是这样- mercurial通过识别文件内容来跟踪文件移动的位置,并且我保存了我的文件历史记录。
here中的一位年轻人对此有一些技巧:
git add .
git ls-files --deleted | xargs git rm但这就像当年的CVS一样。你删除文件,你添加文件。如何保存文件的历史记录??
发布于 2011-11-07 12:34:41
基本上,当git应用提交来更新工作树时,它总是自动地做一些类似于"addremove“的事情:它在提交中查看添加和删除的文件,并检测可能被重命名的添加和删除的文件对(使用”变化量“启发式)。因此,您不必使用特殊的命令;只需执行添加和删除操作,git稍后就会自己解决问题。
在您的示例场景中,只需告诉git关于新文件:git add static和关于已删除文件:git add -u static,您就可以提交了。如果您在提交之前执行git status,您可以看到它已经检测到重命名。
正如另一个答案所提到的,git add -A是一个很好的快捷方式,它可以添加工作树中的所有内容,包括新文件和删除的文件;使用上面范围较窄的命令的唯一原因是,如果您希望避免添加工作树中恰好发生的其他更改。
发布于 2011-11-05 23:17:21
Git不会通过额外的元数据来跟踪重命名,所以你可以完全保证你不会遗漏任何元数据来做git add -A。
虽然Git会跟踪“整个树”的历史记录,而不是文件历史记录,但你可以在事后用git log -M -C和git log --follow <file>等命令激活它的重命名和复制检测。
发布于 2014-04-23 18:43:43
简短的回答。与git中的hg addremove最相似的命令是:
git add -A哦或者是...
git add --allhttps://stackoverflow.com/questions/8021063
复制相似问题