问题标签 [git-mv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
143817 浏览

git - git-mv 的目的是什么?

据我了解,Git 并不真正需要跟踪文件重命名/移动/复制操作,那么真正的目的是git mv什么?手册页不是特别描述...

它已经过时了吗?它是一个内部命令,不打算由普通用户使用吗?

0 投票
14 回答
420917 浏览

git - 在 Git 中处理文件重命名

我读到在 Git 中重命名文件时,您应该提交任何更改,执行重命名,然后暂存重命名的文件。Git 将从内容中识别文件,而不是将其视为新的未跟踪文件,并保留更改历史记录。

但是,今晚就这样做,我最终恢复到git mv.

我将Finder中的样式表从重命名iphone.cssmobile.css

所以 Git 现在认为我删除了一个 CSS 文件,并添加了一个新文件。这不是我想要的。让我们撤消重命名,让 Git 完成这项工作。

我回到我开始的地方:

让我们git mv改用:

看起来我们很好。那么为什么当我第一次使用 Finder 时 Git 没有识别出重命名呢?

0 投票
3 回答
1300 浏览

git - 'git rm' 和 'git mv' 与 git 的实际用例?

我知道 git 提供了 'git rm' 和 'git mv' 来删除/移动文件或目录。但是,我看不到这个的实际用例。

通常,我只是 mv 或 rm 文件或命令行中的任何内容,在完成所有必要的操作后,我可以运行 'git add -u' 和 'git add .',正如我所问并得到的答案在这里

我错过了什么吗?有没有只有 'git rm' 和 'git mv' 能够做到的情况?

0 投票
1 回答
120 浏览

git - git ls-tree HEAD 什么都不返回, git mv 返回不受版本控制

我在 Windows 下使用 GIT 和 GIT Bash 工具,并试图将文件从一个目录移动到另一个目录。我尝试了不同的方法,如清理、再次提交等,但每次我在使用 git mv 时收到回复,表示该文件不受版本控制。但是, git status -u 显示一切正常。在尝试了很多之后,我找到了我要自己回答的答案。

0 投票
2 回答
949 浏览

git - git mv 和 MS-DOS 移动之间有区别吗?

问题

如果我使用命令移动 Git 跟踪git mv的文件而不是仅使用 MS-DOSmove或 Windows 资源管理器移动文件,这会有所不同吗?

早在 Subversion 时代,就必须使用 TortoiseSVNSVN Move versioned files here命令来保持历史完整。

我本来希望它在 Git 中以相同的方式工作,但测试(见下面的示例)表明 Git 自己检测到文件已被移动并且历史记录保持不变。

那么为什么要使用git mv呢?

例子

尽管未使用,但仍保留了整个历史记录git mv,Git 表示已检测到重命名。

0 投票
2 回答
1868 浏览

git - Git:递归移动子模块(嵌套子模块)

我有以下git结构

我想将 git 子模块 c 移动到 2015 文件夹。我知道这样做的“肮脏方式”(涉及修改 .git/config 和更改 .git/modules 文件中的几个文件中的 gitdir)

我最近读到 git mv 应该能够做到这一点,即运行

这适用于没有嵌套子模块的存储库(在我的情况下为 d)。但是,当我在我的目录上运行此命令时,我收到了类似的错误

(注意,执行上述移动后,此错误发生在 git status 上)

是否有人知道执行此操作的一种干净方法(即不涉及手动更改 .git/modules 文件中的路径的方法)?

编辑:(2015 年 6 月 10 日)

我目前不涉及修改任何 git 配置文件的最佳解决方案是(首先确保对 d 的所有更改都已提交并推送到某处)

编辑:(2015 年 8 月 10 日)

侵入性更小的解决方法

编辑:(21/9/2018)

从 git 版本 2.19 开始。这已得到修复并按git mv预期运行。

0 投票
1 回答
370 浏览

git - 在 git 中提交后延迟重命名文件

有人以 git 无法检测到它是同一个文件的方式更改了文件名及其内容。

他们也没有使用git mv,所以当我收到拉取请求时,我看到一个新文件被添加,一个旧文件被删除,这使得审查变得不切实际。

作为一个好人,我拉了他们的代码并尝试做一个late git mv,所以我可以在他们的拉取请求中添加一个提交,并在 Github 评论页面上看到漂亮的东西,但这没有用。

有没有办法对文件进行死后重命名?

0 投票
5 回答
2976 浏览

git - 无法提交文件,不小心用 mv 重命名

我不小心使用 mv 重命名了 git 下的文件。我将文件从小写重命名为大写,保持名称不变。

mv abc.java ABC.java

之后我也进行了更改并提交了文件。

我现在如何对该文件进行实际的 git 重命名?Git bash 似乎不理解 ABC.java 和 abc.java 之间的区别。

我不确定master(其他人)发生了什么变化,但在移动到分支后,我无法再将更改提交到文件。它说旧的文件索引仍然存在。

$ git commit -m "renamed to uppercase" ABC.java 致命:不会添加文件别名'dir1/ABC.java'('dir1/abc.java'已经存在于索引中)

当我执行 git status 时,它会显示重命名的文件,但不允许我提交重命名的文件。如果我尝试删除 abc.java(实际上至少在本地不存在),再次(我认为是因为不区分大小写)git 会删除新的。

如果我从中克隆一个新的 repo,repo 仍然会提取旧名称(abc.java)的文件,但我的所有更改都在其中,直到最近失败的那些都在其中。

0 投票
1 回答
213 浏览

git - git 等价于重命名

在 bash 中,我可以find . -name jndi.properties -exec rename 's/jndi/environment/' {} \;递归地查找所有 jndi.propertie 文件并将它们重命名为 environment.properties。

但是git status不识别mv,它分别显示删除和添加。我该怎么做递归git mv

0 投票
2 回答
1448 浏览

git - 为什么“git mv”不移动文件?如何使其行为“正常”?

请原谅我在这里的无知... 这是背景:我创建了一个 TestScritps 目录来组织测试脚本。我将三个脚本<root dir><root dir>/TestScripts. 我一次移动一个,并在每个之后执行一次本地提交。然后我推送了所有的更改。

我去了另一台机器并执行了拉动:

请注意,这些文件只是被复制的;他们没有动。

我检查了git-mv手册页,但似乎没有讨论错误的行为。

我有两个问题。为什么git mv只复制文件而不移动它们?我怎样才能使git mv表演“正常”?在这里,“通常”意味着几乎每个使用过命令行的人所期望的 - 它将文件<target location><destination location>.


这是相关的命令历史记录。