如何从git的任何分支中获取分支列表?
git中的fetch和pull命令有什么区别?
答案 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 branch
,git branch -a
或git show-ref --heads
以获取更易编写脚本的版本,并查看分支如何与对称差异相关联。
git log --oneline --left-right branch-a...branch-b
这将显示两个分支之间不常见的提交,在其前面加上<
或>
,以显示它们所在的分支。
答案 3 :(得分:0)
有点像@CB Bailey的比赛,但简化了。我使用以下命令显示所有包含提交的分支。
git branch -a --contains <commit>