在源控制系统中,在运行如下命令之间的结果有什么实际差异:
git mv <src> <dest> // see: https://git-scm.com/docs/git-mv
与“低级”命令相比,如
mv <src> <dest>
从版本/源控制系统的角度看,结果有什么不同吗?或者任何人/任何人的观点?
其他git命令也是如此,例如git rm
。 I just want to know what difference it makes between running the git functions versus bash functions, or whatever.
答案 0 :(得分:4)
由于您已使用不同的SCM产品标记了问题,而不只是git
我以更一般的方式回答了这个问题。
每个源控制系统都会跟踪有关文件的不同信息。例如,在Mercurial中,跟踪移动,以便 - 删除和添加重命名的文件时,它还存储有关重命名文件的信息,以及之前的文件。
此外,删除文件时,通常还需要将其从SCM中删除(有时也称为遗忘)。
一般而言,SCM文件操作命令会更新文件系统以及SCM跟踪此更改所需的操作。
答案 1 :(得分:3)
git mv
分阶段进行,因此您可以git commit
之后。如果手动移动文件,则需要在提交之前手动暂存移动。
除此之外, there is no difference 只有微不足道的Leon's answer封面。 git mv的文档说:
移动或重命名文件,目录或符号链接。
...
成功完成后会更新索引,但仍必须提交更改。
答案 2 :(得分:2)
只是一条额外的信息,补充其他答案(这仅适用于giv mv
):
如果文件<dest>
存在(无论是否跟踪),那么
mv <src> <dest>
会默默覆盖它,而
git mv <src> <dest>
拒绝覆盖它,并显示以下错误消息:
fatal: destination exists, source=<src>, destination=<dest>