如何从git的任何分支中获取分支列表?

时间:2009-12-03 21:36:56

标签: git

如何从git的任何分支中获取分支列表?

git中的fetch和pull命令有什么区别?

4 个答案:

答案 0 :(得分:4)

git fetch
git checkout <branch of interest>
git log --children <commit>

将打印一个给定的后代提交列表,该列表部分回答您的问题。

pull确实获取并尝试合并

fetch不合并

答案 1 :(得分:2)

  

如何从git的任何分支中获取分支列表?

取决于你在这里所说的“新兴”(假设你的意思是“给定分支”而不是“任何分支”),它可能是git branch --contains <branch>git branch --merged <branch>

Fro git-branch manpage

SYNOPSIS
git branch [--color | --no-color] [-r | -a]
      [-v [--abbrev=<length> | --no-abbrev]]
      [(--merged | --no-merged | --contains) [<commit>]]
DESCRIPTION
  

使用--contains,仅显示包含命名提交的分支(换句话说,提示提交的分支是   命名提交的后代)。使用--merged,只有分支合并到命名提交(即提示的分支)   将列出从命名提交可到达的提交。使用--no-merged时,只有分支未合并到命名中   提交将被列出。如果缺少参数,则默认为HEAD(即当前分支的尖端)。

答案 2 :(得分:0)

第二个问题更容易。 fetch仅从远程存储库(通常是源)更新当前存储库的远程货架分支,pull执行提取,然后将远程分支合并到当前检出的分支中。获取和合并的确切分支可能取决于配置,但git尝试“做正确的事”并在大多数常见设置中成功。

第一个问题有点棘手,因为可以在任何存储库中的任何点创建新分支,从任何给定分支的历史记录中的任何提交。在许多存储库中,大多数“正常”分支都是以某种方式相互分支的。

您可以做的是查看所有分支git branchgit branch -agit show-ref --heads以获取更易编写脚本的版本,并查看分支如何与对称差异相关联。

git log --oneline --left-right branch-a...branch-b

这将显示两个分支之间不常见的提交,在其前面加上<>,以显示它们所在的分支。

答案 3 :(得分:0)

有点像@CB Bailey的比赛,但简化了。我使用以下命令显示所有包含提交的分支。

git branch -a --contains <commit>