通过在Finder中拖动来移动文件时通知git的方法?

时间:2017-07-10 15:01:12

标签: git finder

我正在使用git来管理我的论文,并且有很多pdf期刊文章,我正在用Finder慢慢重新组织,因为我的目录结构在接下来的几个月内会正常化。我很想找到一种方法告诉git这些文件只是移动而不是删除并添加为新文件以避免repo膨胀。

当我必须移动文件夹或文件夹中的30个文件中的20个时,从命令行执行此操作非常麻烦。

任何人都有一个很好的方法来做到这一点?或者git是自动完成的,我也说不出来?

谢谢!

2 个答案:

答案 0 :(得分:1)

无论你“告诉”git,或者你如何告诉它,git都会总是将移动的文件理解为“删除此位置的文件;创建此另一个位置的文件”。它有时会在其输出中将其重新解释为“文件从此位置移动到此位置”,但不需要特殊提示来执行此操作。但从根本上说,git中没有“移动”操作。

你提到你的担忧是回购臃肿。不用担心。即使git看到两个内容相同的文件,它也只存储一次内容。内容存储在名为BLOB的对象中。文件名存储在名为TREE的“目录列表”对象中。因此,当您移动文件时,TREE中的新条目(可能在不同的TREE对象中,如果您已将文件移动到其他目录),则只需指向已经存在的文件。现有BLOB

所有这些都是自动的。你当然必须添加/提交更改,但从那里开始处理。

答案 1 :(得分:0)

如果PDF文件在移动它们的同时没有更改,那么它们的内容将具有相同的哈希值(即使您重命名该文件以及将其移动到另一个目录。

Git通常会在提交时自行确定这是移动/重命名。那是因为它散列了新的路径,发现它已经知道具有相同散列的文件。然后它看到那些文件被删除了,它发现你刚刚移动/重命名。