如何在Git中查看单个文件的更改历史记录,完整的详细信息?
我有:
git log -- [filename]
Run Code Online (Sandbox Code Playgroud)
它显示了文件的提交历史记录,但是如何获取每个文件更改的内容?
我正试图从MS SourceSafe过渡到过去那么简单right-click→ show history.
我想在Git中重命名/移动项目子树
/project/xyz
Run Code Online (Sandbox Code Playgroud)
至
/components/xyz
Run Code Online (Sandbox Code Playgroud)
如果我使用普通的git mv project components,那么所有的提交历史xyz project都会丢失.有没有办法移动这个以保持历史?
我手动移动了一个文件,然后我修改了它.根据Git,它是一个新文件和一个删除文件.有没有办法强迫Git将其视为文件移动?
尽管阅读了很多关于GIT和移动文件的帖子,但我仍然很难理解如何追踪完整的历史记录.这样gitk myfile的建议在这里似乎只能说明历史,直到前一个举动.据我所知,GIT不会跟踪文件,只跟踪文件的内容.所以我肯定能够查看文件的完整演变,即使它被移动了吗?
任何人都可以指导我一个简单的好例子/教程吗?
我想看一个示例,其中一些文件被移动,更改和提交,然后显示单个文件的历史记录,移动和所有.我一直在看'日志',但这似乎与checkins有关.仍然会欣赏一些建议,即使它说我仍然在想太多的SVN.
在学习了Git的几个障碍之后,我遇到了一个新的挑战:重命名目录(在本地,在工作目录中).
当我键入时git status,它会将旧目录名中的所有文件(在新目录中存在与新目录中完全相同的文件名)列为已删除,新目录名称为"未跟踪".
有没有办法告诉Git"它实际上是同一个目录,只是一个不同的名字"?
这样所有文件都只会被git status修改列出 ?
举例来说,这是git status我重命名整个目录时收到的输出:
git status
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: old-dir-name/file1
# deleted: old-dir-name/file2
# deleted: old-dir-name/file3
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# …Run Code Online (Sandbox Code Playgroud) 我在一个月前做了一个提交,涉及我创建新的文件夹和子文件夹,并在我们之间移动我的源代码文件.我从那时起第一次浏览我的历史并且意识到git已经"丢失"了历史,因为原始文件被删除然后重新添加,我想 - 即当我在我的git GUI中查看文件时(它是根据NDA,所以我不能直接讨论它,但是例如,这个存储库也在GitHub上被破坏.GitHub清楚地显示它将提交检测为一系列动作.)它只显示每个文件的历史记录,当项目文件夹时被重组了.
在阅读了几个问题(获取Git以确认以前移动的文件,如何使git标记为已删除文件和将新文件作为文件移动?)之后,我比起初时更加迷失.从那些答案中听起来我根本无法解决这个问题?我真的很感激这里的任何帮助.
我很清楚Git如何支持文件移动:因为它使用文件哈希,"添加"文件很容易被检测为与"删除"文件相同.
我的问题是关于重构:考虑到Java,包声明会发生变化,因此文件内容将不相同.在这种情况下,Git如何确定"添加"文件与"已删除"文件共享历史记录?它是否检查"最相似的内容",假设我只做了一些小改动,或类似的非确定性解决方案?
我正在为我的软件公司寻找一个新的版本控制系统,这个系统相当小.到目前为止,我一直在使用CVS,但我有点关于重组文件结构的OCD,因此,我似乎总是在我的所有代码的版本1(因为更改目录名称会引发CVS的版本控制窗户).是否有更多针对开发阶段的版本控制系统(项目目录树不断变化)或者我是否需要扣下并开始编写自己的版本控制系统?基本上,我需要它来基于物理文件路径之外的其他东西来跟踪文件的版本,这样移动不会影响文件版本信息.任何建议将不胜感激.谢谢!
干杯,Lukas Rezek
git ×9
cvs ×1
dvcs ×1
file-rename ×1
git-log ×1
git-merge ×1
hash ×1
mv ×1
refactoring ×1
rename ×1
svn ×1
versioning ×1