我们使用Git和Github。我们有两个主要分支staging
和production
。将新项目/功能分配给开发人员时,他们会创建一个新分支,从feature-branch
调用它production
,进行更改,提交,推送到GitHub,并将feature-branch
与staging
合并{1}}使用GitHub。当该功能准备好上线时,开发人员然后使用GitHub将feature-branch
与production
合并。所有合并都会添加merge
提交。
发生了什么事情,开发人员说他们的feature-branch
内容在production
上,他们从未执行从feature-branch
到production
的合并。有人可能会意外地将staging
与production
合并。
一些开发人员犯了错误,我试图弄清楚它发生的根源,并可能正确地扭转它。我希望有人可以帮助我。
我正在尝试使用GitHub,Git Bash和Git Extensions的组合来查明特定文件在什么时候进入分支。使用Git Extensions file history
功能,它只显示提交更改的时间,而不是在合并到分支时。
我怎样才能做到这一点?我搜索并使用了很多策略来查找文件日志,例如在When was a file added to a branch in Git?找到的git log --pretty=online <branch> -- <file>
。
任何额外的帮助将不胜感激。如果您需要更多信息,请告诉我,我很乐意提供。
我忘记提及这一点,这在这种情况下可能很重要。在feature-branch
,我们提交了一些更改(change-1
和change-2
),并将其合并到staging
和production
。然后,开发人员对changes-3
进行了进一步的更改(feature-branch
),并且仅合并到staging
。虽然production
应该有change-1
和change-2
而不是change-3
,但我怎样才能找到changes-3
进入production
的时间点?
答案 0 :(得分:3)
我正在尝试做什么[...]找出特定文件在什么时候进入分支。
问题陈述的一个问题是文件可以重命名,如果你只是运行像
这样的东西git log --pretty=online <branch> -- <file>
仅列出将调用相关文件<file>
的提交。但是,名为git log
的{{1}}标志就在你的小巷里;请参阅git-log
man page:
--follow
继续列出重命名以外的文件历史记录(仅适用于单个文件 文件)。
在这里你要运行
--follow
顶部日志条目将对应于git log --reverse --follow <branch> -- <file-in-question>
出现的最旧(按时间顺序排列)提交。如果要获得<file-in-question>
出现的最旧(在拓扑意义上)提交,则需要在上面的命令中添加<file-in-question>
标志。
答案 1 :(得分:-1)
git blame <filename>
将为您提供具有提交ID和提交者名称以及日期时间的文件的逐行详细信息。