我读过,当在git中重命名文件时,你应该提交任何更改,执行重命名,然后暂存重命名的文件.Git将从内容中识别文件,而不是将其视为新的未跟踪文件,并保留更改历史记录.
然而,今晚这样做我最终还是回归git mv.
> $ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
#
Run Code Online (Sandbox Code Playgroud)
将Finder中的样式表重命名iphone.css为mobile.css
> $ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
#
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be …Run Code Online (Sandbox Code Playgroud) 我对git比较新,我之前使用过Subversion.
我注意到,如果文件已重命名,大多数图形git前端和IDE插件似乎都无法显示文件的历史记录.我用的时候
git log --follow
Run Code Online (Sandbox Code Playgroud)
在命令行上,我可以看到重命名的整个日志.
根据Linus Torvalds的说法--follow switch是一个"SVN noob",严肃的git用户不使用它:
--follow是一个彻底的黑客,意味着只是满足前SVN用户,他们从来不知道任何事情,如父母身份或漂亮的修订图表无论如何.
这并不是完全基本的,但是" - follow"的当前实现实际上是一个快速的预处理事物,它固定在修订行走逻辑上,而不是真正的整体.
它实际上被设计为"SVN noob",而不是"真正的git功能".我们的想法是,你要摆脱思维的(破碎)思维方式,重新命名大局.
我的问题:你们中的硬核git用户如何在重命名时获取文件的历史记录?这样做的"真实"方法是什么?
我得到了一个git repo current我是唯一使用它的人.我想把根文件夹下的所有文件和文件夹放在一个新的文件夹中,例如:
当前的根目录
main -> src res
新根
main ->
app1
src
res
如何在Windows上使用git而不会丢失历史记录?
重命名文件夹(git mv foldername newfoldername)后,Github中此文件夹的历史记录已经消失.如果我克隆repro并运行,我仍然可以查看文件夹中任何文件的完整历史记录...
git log --follow ./newfoldername/file
Run Code Online (Sandbox Code Playgroud)
但是有可能在Github中获取重命名文件夹的历史记录吗?这是一个Github问题,git修订历史正如预期的那样工作.谢谢
我在一个月前做了一个提交,涉及我创建新的文件夹和子文件夹,并在我们之间移动我的源代码文件.我从那时起第一次浏览我的历史并且意识到git已经"丢失"了历史,因为原始文件被删除然后重新添加,我想 - 即当我在我的git GUI中查看文件时(它是根据NDA,所以我不能直接讨论它,但是例如,这个存储库也在GitHub上被破坏.GitHub清楚地显示它将提交检测为一系列动作.)它只显示每个文件的历史记录,当项目文件夹时被重组了.
在阅读了几个问题(获取Git以确认以前移动的文件,如何使git标记为已删除文件和将新文件作为文件移动?)之后,我比起初时更加迷失.从那些答案中听起来我根本无法解决这个问题?我真的很感激这里的任何帮助.