首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hg addremove in git

hg addremove in git
EN

Stack Overflow用户
提问于 2011-11-05 23:11:40
回答 3查看 10.1K关注 0票数 28

我真的需要git中的这个命令。

代码语言:javascript
复制
hg addremove

所以现在看看场景,看看mercurial是如何在这里拯救我的:

我在这里有一些目录var/htdocs/static/static。我不小心把文件移到了错误的位置(使用git-mv)。不管怎样..。现在我手动移动了一些文件夹:

代码语言:javascript
复制
mv static static2
mv static2/static ./

也许我在这里也改了一些文件...现在一切都好了..。所以现在git不知道发生了什么?他如何在不通知的情况下跟踪文件的移动,就像mercurial对addremove所做的那样。

例如,现在使用mercurial我可以这样做:

代码语言:javascript
复制
hg addremove --similarity 80%

就是这样- mercurial通过识别文件内容来跟踪文件移动的位置,并且我保存了我的文件历史记录。

here中的一位年轻人对此有一些技巧:

代码语言:javascript
复制
git add .
git ls-files --deleted | xargs git rm

但这就像当年的CVS一样。你删除文件,你添加文件。如何保存文件的历史记录??

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-07 12:34:41

基本上,当git应用提交来更新工作树时,它总是自动地做一些类似于"addremove“的事情:它在提交中查看添加和删除的文件,并检测可能被重命名的添加和删除的文件对(使用”变化量“启发式)。因此,您不必使用特殊的命令;只需执行添加和删除操作,git稍后就会自己解决问题。

在您的示例场景中,只需告诉git关于新文件:git add static和关于已删除文件:git add -u static,您就可以提交了。如果您在提交之前执行git status,您可以看到它已经检测到重命名。

正如另一个答案所提到的,git add -A是一个很好的快捷方式,它可以添加工作树中的所有内容,包括新文件和删除的文件;使用上面范围较窄的命令的唯一原因是,如果您希望避免添加工作树中恰好发生的其他更改。

票数 25
EN

Stack Overflow用户

发布于 2011-11-05 23:17:21

Git不会通过额外的元数据来跟踪重命名,所以你可以完全保证你不会遗漏任何元数据来做git add -A

虽然Git会跟踪“整个树”的历史记录,而不是文件历史记录,但你可以在事后用git log -M -Cgit log --follow <file>等命令激活它的重命名和复制检测。

票数 9
EN

Stack Overflow用户

发布于 2014-04-23 18:43:43

简短的回答。与git中的hg addremove最相似的命令是:

代码语言:javascript
复制
git add -A

哦或者是...

代码语言:javascript
复制
git add --all
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8021063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档