是否可以从特定文件推送到远程主分支的位置获取分支名称?
无意中我处于这样的状态,我应该确定哪个分支将一个意外的文件推送到master。
由于有数千个提交,因此无法通过提交进行详尽的查询。
非常感谢任何帮助。
答案 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