何时将文件引入给定的Git分支?

时间:2015-03-11 18:34:04

标签: git github merge git-log

我们使用Git和Github。我们有两个主要分支stagingproduction。将新项目/功能分配给开发人员时,他们会创建一个新分支,从feature-branch调用它production,进行更改,提交,推送到GitHub,并将feature-branchstaging合并{1}}使用GitHub。当该功能准备好上线时,开发人员然后使用GitHub将feature-branchproduction合并。所有合并都会添加merge提交。

发生了什么事情,开发人员说他们的feature-branch内容在production上,他们从未执行从feature-branchproduction的合并。有人可能会意外地将stagingproduction合并。

一些开发人员犯了错误,我试图弄清楚它发生的根源,并可能正确地扭转它。我希望有人可以帮助我。

我正在尝试使用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>

任何额外的帮助将不胜感激。如果您需要更多信息,请告诉我,我很乐意提供。

更新#1

我忘记提及这一点,这在这种情况下可能很重要。在feature-branch,我们提交了一些更改(change-1change-2),并将其合并到stagingproduction。然后,开发人员对changes-3进行了进一步的更改(feature-branch),并且仅合并到staging。虽然production应该有change-1change-2而不是change-3,但我怎样才能找到changes-3进入production的时间点?

2 个答案:

答案 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和提交者名称以及日期时间的文件的逐行详细信息。