我回到了一个旧项目,然后我运行了很好的git status
来弄清楚发生了什么,我注意到分支太多了!我想在开始处理之前做一些家务,但我不确定哪个分支来自哪个......
E.G。 “branchA”是否来源于“发展”? “branchB”是否来自“master”或“branchA”??
我如何回答上述示例问题?
答案 0 :(得分:26)
git merge-base显示提交是两个分支的共同祖先。
简单用法:git merge-base <branch> <branch>
显示两个分支的常见提交。
答案 1 :(得分:17)
对此没有规范的答案,因为分支只是指向DAG中某些提交的指针。例如,master
和foo
可能指向同一个提交;如果您随后从foo
创建分支,则实际上与从master
创建分支相同。
也就是说,如果您可视化提交图(通过gitk
或其他图形历史记录工具),您可以大致了解提交图中分支点的位置,而不是各种分支指针的位置。指示。
答案 2 :(得分:2)
如果您使用的是Windows或Linux(使用GUI),只需安装漂亮的git-extensions即可。他们可以很好地将您的分支/合并树可视化。
http://code.google.com/p/gitextensions/downloads/detail?name=GitExtensions207.zip&can=4&q=
问候,
答案 3 :(得分:2)
如果您已经在一个分支上,则可以从另一个分支(例如,master
)得到该分支的提交,例如:
git merge-base --fork-point master
答案 4 :(得分:1)
您可以使用图形树查看器,我使用gitg
来查看分支和差异,尽管我大部分时间都在使用命令行进行实际工作。
答案 5 :(得分:1)
坚持命名惯例,免除所有困惑。
从master
创建分支时 - 假设要实现电子邮件功能 - 您可以将其命名为master_emailfeature
。然后,如果您需要从此分支创建子分支以实现电子邮件的ssl,则可以将其命名为master_emailfeature_sslandtls
。
通过查看分支的名称,可以清楚地创建了哪个分支。
答案 6 :(得分:0)
如果你想弄清楚你的本地分支派生自哪个远程分支,这个命令可以解释一下。
git remote show origin
向下滚动,直到您看到&#34;本地分支机构配置为&#39; git pull&#39;:&#34;在其下方,显示所有本地分支的列表,并且远程分支将合并。
答案 7 :(得分:0)
命令行git可执行文件还具有显示分支和合并的基本树的功能,请使用--graph选项设置git log。您可以使用其他选项对其进行各种出色的增强。尝试以下尺寸:
最简单:git log --graph
好:git log --graph --decorate --simplify-by-decoration --color --oneline --date = local
全部费用:git log --graph --decorate --simplify-by-decoration --color --oneline --date = local --pretty = format:'%C(auto)%h%d% C(reset)%s(%C(cyan)%ad%ae%C(reset))'
答案 8 :(得分:0)
正如其他人提到的那样,没有规范的答案,但是INSERT INTO table2
(First, Last, Address...)
SELECT `COL 1` as First, `COl 2` as Last, `COl 3` as Address
FROM table1;
在某些情况下可以通过显示您的本地git历史记录来提供帮助:
git reflog
在这种情况下,我可以看到我从a1b2c3d4 (HEAD -> my_current_working_branch) HEAD@{0}: pull origin master: Merge made by the 'recursive' strategy.
aaaa1111 (origin/my_current_working_branch) HEAD@{1}: commit: Added bar
def123aa (forgotten_branch) HEAD@{2}: checkout: moving from forgotten_branch to my_current_working_branch
分支到forgotten_branch
,并合并了my_current_working_branch
。
它不会总是为您提供所需的信息,但是在某些情况下可以提供帮助。