我手动移动了一个文件,然后修改了它。根据Git,它是一个新文件和一个已删除的文件。有什么方法可以强制Git将其视为文件移动吗?
当前回答
对我来说,在提交之前保存所有更改并再次弹出它们是有效的。这使得git重新分析添加/删除的文件,并正确地将它们标记为已移动。
其他回答
如果你说git状态不显示重命名,试试git commit——dry-run -a
使用git mv命令来移动文件,而不是操作系统的移动命令: https://git-scm.com/docs/git-mv
请注意,git mv命令只存在于git 1.8.5及以上版本。因此,您可能必须更新Git才能使用此命令。
可能有一个更好的“命令行”方法来实现这一点,我知道这是一种hack,但我从来没有找到一个好的解决方案。
使用TortoiseGIT:如果你有一个GIT提交,其中一些文件移动操作显示为加载添加/删除,而不是重命名,即使文件只有很小的变化,那么这样做:
检查你在当地做了什么 在第二次提交中检入一个小的单行更改 去GIT登录乌龟GIT 选择两个提交,右键单击,选择“merge into one commit”
新的提交现在将正确地显示文件重命名……这将有助于维护正确的文件历史。
git diff -M或git log -M会自动检测这些更改,如重命名和微小的更改,只要它们确实是。 如果你的小变化不是小的,你可以降低相似度阈值,例如。
$ git log -M20 -p --stat
将其从默认的50%降低到20%。
我最近在移动(但不是修改)一些文件时遇到了这个问题。
问题是,当我移动文件时,Git更改了一些行结束符,然后无法判断文件是否相同。
使用git mv解决了这个问题,但它只能在单个文件/目录上工作,而且我在存储库的根目录下有很多文件要做。
解决这个问题的一种方法是使用bash /批处理魔法。
另一种方法如下
移动文件,git提交。这将更新行结束符。 将文件移回原来的位置,现在它们有了新的行结束符,git提交—修改 再次移动文件,git提交—修改。这次行结束符没有变化,所以Git很高兴
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别