我们使用
Git和
Github.我们有两个主要的分支,分期和生产.当一个新的项目/特性被分配给开发人员时,他们创建一个新的分支,从生产中调用它的功能分支,进行更改,提交,推送到GitHub,并使用GitHub将功能分支与分段合并.当该功能准备好上线时,开发人员然后使用GitHub将功能分支与生产合并.所有合并都会添加合并提交.
发生的事情是,开发人员说他们的功能分支内容正在生产中,他们从未执行从功能分支到生产的合并.有人可能会意外地将分段与生产合并.
一些开发人员犯了错误,我试图弄清楚它发生的根源,并可能正确地扭转它.我希望有人可以帮助我.
我正在尝试使用GitHub,Git Bash和Git Extensions的组合来查找特定文件在什么时候进入分支.使用Git Extensions文件历史记录功能,它仅显示提交更改的时间,而不是在将其合并到分支时.
我怎么能做到这一点?我搜索并使用了许多策略来查找文件日志,例如git log –pretty = online< branch> – < file>发现于When was a file added to a branch in Git?.
任何额外的帮助将不胜感激.如果您需要更多信息,请告诉我,我很乐意提供.
更新#1
我忘了提到这一点,这在这种情况下可能很重要.在功能分支上,提交了一些更改(change-1和change-2)并将其合并到staging和production.然后,开发人员对其功能分支进行了进一步的更改(更改-3),并且仅合并到分段.虽然生产应该有变化-1和变化-2而不是变化-3,但我怎样才能发现变化-3何时进入生产?
最佳答案
What I’m trying to do […] is find out at what point did a particular file enter a branch.
问题陈述的一个问题是文件可以重命名,如果你只是运行类似的东西
git log --pretty=online <branch> -- <file>
仅提交有问题的文件的提交< file>将被列出.但是,名为–follow的git log标志就在你的小巷里;见git-log
man page:
--follow
Continue listing the history of a file beyond renames (works only for a single
file).
在这里你想跑
git log --reverse --follow <branch> -- <file-in-question>
顶部日志条目将对应于最早(按时间顺序)提交,其中< file-in-question>出现.如果你想获得最早的(在拓扑意义上)提交,其中< file-in-question>出现时,您需要在上面的命令中添加–topo-order标志.