当涉及到源代码控制系统时,运行以下命令之间的实际结果差异是什么:
git mv <src> <dest> // see: https://git-scm.com/docs/git-mv
Run Code Online (Sandbox Code Playgroud)
与“较低”级别的命令相比
mv <src> <dest>
Run Code Online (Sandbox Code Playgroud)
从版本/源代码控制系统的角度来看,结果有什么不同吗?或者任何/任何人的观点?
其他 git 命令(如git rm.I just want to know what difference it makes between running the git functions versus bash functions, or whatever.
由于您已经用不同的 SCM 产品标记了这个问题,而不仅仅是git我以更一般的方式回答这个问题。
每个源代码控制系统都会跟踪有关文件的不同信息。例如,在 Mercurial 中,移动会被跟踪,因此,除了删除和添加重命名文件之外,它还存储有关重命名以及之前的文件的信息。
另外,在删除文件时,通常也需要将其从 SCM 中删除(有时也称为遗忘)。
因此,一般来说,SCM 文件操作命令确实会更新文件系统以及 SCM 跟踪此更改所需的操作。
只是一个额外的信息,补充其他答案(这仅适用于giv mv):
如果文件<dest>存在(无论是否被跟踪)那么
mv <src> <dest>
Run Code Online (Sandbox Code Playgroud)
会默默地覆盖它,而
git mv <src> <dest>
Run Code Online (Sandbox Code Playgroud)
拒绝覆盖它,并显示以下错误消息:
fatal: destination exists, source=<src>, destination=<dest>
Run Code Online (Sandbox Code Playgroud)