Git:mv命令

5

我已经阅读过,mv 命令基本上与

$ mv README.txt README
$ git rm README.txt
$ git add README

只是为了确保,如果我这样做,它是否完全相同:

$ git rm --cached README.txt
# [rename file using right click rename]
$ git add README

就像有人曾经告诉我一样:你是否考虑接受其中一个答案作为正确答案,或者提供更多关于你真正想要的细节,这样我们就可以改进我们的回答并让你获得新的信息? - Gabriel L. Oliveira
@Gabriel L. Oliveira 我在回答的回复中添加了更多细节。 - Pacerier
3个回答

6
不需要。建议在想要将路径(在本例中为README.txt)从索引中取消暂存并删除时使用--cached参数。无论是否修改,工作目录文件都将保持不变。
更好的方法是使用git的内置mv命令来重命名文件。因此:
$ git mv README.txt README

你可以选择第二种方法来实现相同的效果,但需要输入更少的内容。
字体:http://www.kernel.org/pub/software/scm/git/docs/git-rm.html

1
抱歉,当你说“工作树文件”时,我不太明白你的意思。 - Pacerier
顺便说一下,你是不是要表达的其实两者是相同的,只是根据目的,推荐使用其中之一(尽管任何选择都会使文件最终处于完全相同的状态)? - Pacerier
1
@Pacerier "工作树文件" 指的是您的实际文件(保存在硬盘上)。当您使用 git rm 时,git 真正从您的磁盘中删除该文件,而使用 git rm --cached 只会将该文件从索引(提交的 HEAD)中删除,使文件(已修改或未修改)保留在您的硬盘上。我的意思是,与使用这两种解决方案不同,使用 git mv 是更好的选择,因为可以通过单个命令完成所需操作。此外,让 git 树将其视为移动(重命名等),而不是“全新的文件”。明白了吗? - Gabriel L. Oliveira
1
好的,我明白了“工作树文件”的部分。然而,无论我们如何操作,Git 都会认为它是一个“全新的文件”,而不是“移动”(因为 Git 真的不知道移动),所以我的问题是,在比较 1) 和 2) 时,Git 生成的“元数据”是否有任何区别? - Pacerier
@Pacerier 嗯,我认为不会,因为两种方式都会得到相同的结果。对一个文件进行rm操作,对另一个文件进行add操作(这是rm一次完成的操作)。 - Gabriel L. Oliveira

4

3

我已经阅读了链接,但它没有告诉我在问题中我的第一选择是否与我的第二选择相同。 - Pacerier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接