如何知道分支(或提交)何时合并到另一个分支? 例如 - 假设我有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"在某些时候是主人) - 但我不知道什么时候被掌握,因为所有我看到的是今天的图像,而不是图像。
答案 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,以及它何时合并到当前系统(本地)。