从哪个分支推送文件

时间:2016-06-06 10:59:03

标签: git version-control

是否可以从特定文件推送到远程主分支的位置获取分支名称?

无意中我处于这样的状态,我应该确定哪个分支将一个意外的文件推送到master。

由于有数千个提交,因此无法通过提交进行详尽的查询。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

因为分支实际上只是指向repo中特定提交的指针,所以git并没有真正跟踪那些分支。

话虽如此,有可能找到导致问题的提交,并且很可能找到被推送的分支(尽管这将取决于您的工作流程)。

首先使用git log -1 -- <file>,这将显示涉及该文件的最后一次提交。从你的问题来看,应该只有一个。

知道这一切我们需要做的是找到包含这个特定提交的分支。 From this answer我们想要的命令是git branch -a --contains <commit>此列表应包含您正在寻找的远程主控和罪魁祸首分支。 -a将添加您的repo知道的所有远程分支。

根据合并的次数,此列表应限制为master和您要查找的分支。否则,它将包含所有与您正在寻找的分支合并的分支。

如果是这种情况,您可以检查历史记录以查找合并提交。 git log --graph将显示&#39;发生的分支和合并。输入此命令,然后键入/ <sha of file commit>,它将带您进入创建该文件的提交。然后跟踪提交前进的行,直到获得应包含分支名称的合并提交。根据您的历史记录,这种方法可能会很混乱。

答案 1 :(得分:0)

找到添加它的用户,这可能会给分支提供线索。

 git blame FILENAME | head

查找添加它的提交以及它的SHA1值

git log --oneline --decorate  --diff-filter=A -- FILENAME

找到添加它的分支(如果ref log返回那么远!!)

git ref-log | grep SHA1VALUE