在 Git 中重命名文件后没有预期的日志 [重复]

Posted

技术标签:

【中文标题】在 Git 中重命名文件后没有预期的日志 [重复]【英文标题】:Not expected log after renaming a file in Git [duplicate] 【发布时间】:2017-01-13 23:23:05 【问题描述】:

我在 git 存储库中重命名了一个文件:

git mv oldname.py newname.py

然后git status 告诉我需要提交的更改正在重命名文件。我没有写git add newname.py。 我提交并推送到GitHub,然后文件名更改成功。 但是当我在 GitHub 上看到该文件的历史记录时,它只包含最后一次提交,而不是所有提交。

谁能给我解释一下发生了什么?

【问题讨论】:

【参考方案1】:

当您移动文件时,Git 不会移动文件中的编辑历史记录。在进行修补、恢复提交等时会产生大量问题。git mv 是删除文件和添加到跟踪文件列表的快捷方式。

GitHub 不显示文件的完整历史记录,但您可以使用 git log --follow newname.py 手动完成,它应该在 git mv 之前显示更改

【讨论】:

知道了。谢谢。【参考方案2】:

git mv a b 自动将重命名的文件b 添加到暂存区。这实际上和做的一样

mv a b
git rm a
git add b

cp a b
git rm a
git add b

在这种情况下,我们可以清楚地看到为什么某些客户端(例如 GitHub 的 Web 界面)会将这两个文件视为独立的。

【讨论】:

知道了。谢谢。

以上是关于在 Git 中重命名文件后没有预期的日志 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JGit 中重命名文件

git:重命名文件并更改文件内容

在 Git 和 Mercurial 中重命名:准确性和自动化

在 git 文件重命名后使 Xcode 5 跟随历史

在Python中重命名目录中的多个文件[重复]

当远程分支在 Git 中重命名时,如何更新我的本地引用?