问题标签 [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.
git - git-mv 的目的是什么?
据我了解,Git 并不真正需要跟踪文件重命名/移动/复制操作,那么真正的目的是git mv
什么?手册页不是特别描述...
它已经过时了吗?它是一个内部命令,不打算由普通用户使用吗?
git - 在 Git 中处理文件重命名
我读到在 Git 中重命名文件时,您应该提交任何更改,执行重命名,然后暂存重命名的文件。Git 将从内容中识别文件,而不是将其视为新的未跟踪文件,并保留更改历史记录。
但是,今晚就这样做,我最终恢复到git mv
.
我将Finder中的样式表从重命名iphone.css
为mobile.css
:
所以 Git 现在认为我删除了一个 CSS 文件,并添加了一个新文件。这不是我想要的。让我们撤消重命名,让 Git 完成这项工作。
我回到我开始的地方:
让我们git mv
改用:
看起来我们很好。那么为什么当我第一次使用 Finder 时 Git 没有识别出重命名呢?
git - 'git rm' 和 'git mv' 与 git 的实际用例?
我知道 git 提供了 'git rm' 和 'git mv' 来删除/移动文件或目录。但是,我看不到这个的实际用例。
通常,我只是 mv 或 rm 文件或命令行中的任何内容,在完成所有必要的操作后,我可以运行 'git add -u' 和 'git add .',正如我所问并得到的答案在这里。
我错过了什么吗?有没有只有 'git rm' 和 'git mv' 能够做到的情况?
git - git ls-tree HEAD 什么都不返回, git mv 返回不受版本控制
我在 Windows 下使用 GIT 和 GIT Bash 工具,并试图将文件从一个目录移动到另一个目录。我尝试了不同的方法,如清理、再次提交等,但每次我在使用 git mv 时收到回复,表示该文件不受版本控制。但是, git status -u 显示一切正常。在尝试了很多之后,我找到了我要自己回答的答案。
git - git mv 和 MS-DOS 移动之间有区别吗?
问题
如果我使用命令移动 Git 跟踪git mv
的文件而不是仅使用 MS-DOSmove
或 Windows 资源管理器移动文件,这会有所不同吗?
早在 Subversion 时代,就必须使用 TortoiseSVNSVN Move versioned files here
命令来保持历史完整。
我本来希望它在 Git 中以相同的方式工作,但测试(见下面的示例)表明 Git 自己检测到文件已被移动并且历史记录保持不变。
那么为什么要使用git mv
呢?
例子
尽管未使用,但仍保留了整个历史记录git mv
,Git 表示已检测到重命名。
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
预期运行。
git - 在 git 中提交后延迟重命名文件
有人以 git 无法检测到它是同一个文件的方式更改了文件名及其内容。
他们也没有使用git mv
,所以当我收到拉取请求时,我看到一个新文件被添加,一个旧文件被删除,这使得审查变得不切实际。
作为一个好人,我拉了他们的代码并尝试做一个late git mv
,所以我可以在他们的拉取请求中添加一个提交,并在 Github 评论页面上看到漂亮的东西,但这没有用。
有没有办法对文件进行死后重命名?
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)的文件,但我的所有更改都在其中,直到最近失败的那些都在其中。
git - git 等价于重命名
在 bash 中,我可以find . -name jndi.properties -exec rename 's/jndi/environment/' {} \;
递归地查找所有 jndi.propertie 文件并将它们重命名为 environment.properties。
但是git status不识别mv,它分别显示删除和添加。我该怎么做递归git mv
?
git - 为什么“git mv”不移动文件?如何使其行为“正常”?
请原谅我在这里的无知... 这是背景:我创建了一个 TestScritps 目录来组织测试脚本。我将三个脚本<root dir>
从<root dir>/TestScripts
. 我一次移动一个,并在每个之后执行一次本地提交。然后我推送了所有的更改。
我去了另一台机器并执行了拉动:
请注意,这些文件只是被复制的;他们没有动。
我检查了git-mv
手册页,但似乎没有讨论错误的行为。
我有两个问题。为什么git mv
只复制文件而不移动它们?我怎样才能使git mv
表演“正常”?在这里,“通常”意味着几乎每个使用过命令行的人所期望的 - 它将文件<target location>
从<destination location>
.
这是相关的命令历史记录。