Git:分支何时合并为主人?

时间:2014-07-29 08:07:19

标签: git git-merge

如何知道分支(或提交)何时合并到另一个分支? 例如 - 假设我有branch1和master,并且在过去的某个时候,branch1被合并到master中,我如何知道何时将特定提交引入主分支? 就Git而言,一旦提交可以从master获得,它就在那里。

请参阅示例(windows)脚本来说明问题:

rd .git /s /q
del data.txt

git init

echo 1 > data.txt
git add data.txt
git commit -m initial_commit_master

git checkout -b branch1
echo 2 > data.txt
git add data.txt
git commit -m commit_in_branch1

git checkout master
git merge branch1

echo 3 > data.txt
git add data.txt
git commit -m 2nd_commit_master

我如何识别" 2" (在data.txt中)来自分支" branch1"它最早与大师联系了吗?

编辑1:示例用例 - 由于我们是从master部署的,因此我很想知道特定更改何时实际引入到生产中。我知道它现在在主人(" 2"在某些时候是主人) - 但我不知道什么时候被掌握,因为所有我看到的是今天的图像,而不是图像。

3 个答案:

答案 0 :(得分:1)

确切的答案是:你不能以100%可靠的方式做到这一点。例如,您可以删除branch1分支,git将不会保留提交的原始分支的任何跟踪。

话虽如此:

您可以使用"2"找到在data.txt中引入git log -Sword的提交:

git log -S2 -- data.txt

一旦定位了您正在寻找的提交,您就可以找到包含给定提交的分支(仍然存在):

git branch --contains <hash>

参考文献:
How to grep Git commit diffs or contents for a certain word?
How to list branches that contain a given commit?

答案 1 :(得分:1)

This GitHub repo可以满足您的需求。

答案 2 :(得分:0)

我正在寻找类似的东西 - 获取更改被拉/合并到当前分支的时间戳。我想要这些信息,以便我可以看到我何时将一些更改移动(拉/合并)到生产环境的主分支。这就是我发现有用的东西:

命令: git reflog show --date=default

输出:

5c4f140 HEAD@{Mon Aug 10 05:36:24 2015 +0000}: pull origin: Fast-forward 1ba6e4e HEAD@{Wed Aug 5 14:40:50 2015 +0000}: pull origin: Fast-forward 05382e4 HEAD@{Wed Jul 22 12:27:20 2015 +0000}: pull origin: Fast-forward bad194c HEAD@{Wed Jul 22 09:54:01 2015 +0000}: pull origin: Fast-forward 016f6cb HEAD@{Sat Jul 18 04:53:56 2015 +0000}: pull origin: Fast-forward b4839d3 HEAD@{Mon Jul 6 07:35:23 2015 +0000}: pull origin: Fast-forward

基本上它会显示提交ID,以及它何时合并到当前系统(本地)。