我不假思索地手动移动了一大堆文件,找不到一种方法让git识别这些文件只是被移动了,而不是实际上不同的文件。除了删除旧的并添加新的(从而丢失历史),或者使用git-mv重做所有的更改之外,还有什么方法可以做到这一点吗?
发布于 2009-09-16 03:29:27
我认为它已经做到了这一点。现在,我可能错了,但我读到过git根据文件的内容来跟踪文件,而不是基于它们在文件系统中的位置或增量/差异。在堆栈中,我认为它显示了文件正在被删除,然后重新添加,但我认为我已经尝试过一次,它仍然保留了历史记录,这是由于前面提到的git跟踪事情的方式。
对于某些人来说,验证我的正确性还是很有帮助的。如果我误解了你的问题,很抱歉。
发布于 2010-09-14 20:26:11
要让git删除已经删除或移动的文件,只需输入
git add -u发布于 2009-09-16 06:58:17
git不会跟踪单个文件的历史记录,也不会特别处理移动和复制,也就是说,没有特殊的元数据来指示发生了移动或复制。相反,每次git提交都是工作树的完整快照。
如果你想在git log中看到移动,你可以提供-M,除了一个列出哪些文件已经改变的选项,例如
git log --summary -Mgit将查看提交历史记录中的相邻树,并推断每次提交是否移动了任何文件。
要查找副本以及重命名,可以使用-C选项,您可以提供两次该选项,以牺牲一些性能为代价,使git更难查找可能的副本来源。
git log --summary -M -C -C请注意,由于git不存储文件历史记录(只存储提交历史记录),即使您对文件执行了git rm和git mv操作,也不会丢失任何历史记录。对路径的所有更改仍将被记录并在git log中可见。
https://stackoverflow.com/questions/1430749
复制相似问题