我有一个存储库,其中包含分支主服务器和A以及两者之间的大量合并活动.当基于master创建分支A时,如何在我的存储库中找到提交?
我的存储库基本上是这样的:
-- X -- A -- B -- C -- D -- F (master)
\ / \ /
\ / \ /
G -- H -- I -- J (branch A)
Run Code Online (Sandbox Code Playgroud)
我正在寻找修订版A,这不是git merge-base (--all)找到的.
在我的存储库中,如果我输入
$ git diff some-file
Run Code Online (Sandbox Code Playgroud)
要么
$ git difftool some-file
Run Code Online (Sandbox Code Playgroud)
我得到了终端差异显示.我认为这不应该发生,因为我已经设置了一个外部差异工具,如输出所示git config -l:
$ git config -l
user.name=blah blah
user.email=blah blah
http.sslverify=true
diff.external=/home/daniel/bin/git-diff <--This is the important line
push.default=simple
core.filemode=false
core.editor=gedit
alias.tree=log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset) %C(auto)%d%C(reset)
%C(black)[%cr]%C(reset) %x09%C(black)%an: %s %C(reset)'
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
remote.origin.url=https://daniel@skynet/git/pyle.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.daniel.remote=origin
branch.daniel.merge=refs/heads/daniel
Run Code Online (Sandbox Code Playgroud)
该diff.external行中引用的git-diff文件如下所示
#!/bin/bash
meld $2 $5
Run Code Online (Sandbox Code Playgroud)
为什么不git diff援引融合?
如果我设置git config -l了以下行,我会得到相同的行为:
diff.tool = meld
Run Code Online (Sandbox Code Playgroud)
要么
diff.external = usr/bin/meld
Run Code Online (Sandbox Code Playgroud)
注意 …
我的git存储库有三个分支devel,stable和customers/acme_patches.很久以前,它stable是分叉的devel,并且所有的错误修正都发生在stable.时不时地stable被合并回来devel.customers/acme_patches是一个具有一些客户特定补丁的分支.该分支未合并为devel和stable.
一些ASCII艺术来说明场景:
o---o---o customers/acme_patches?
/
o---o---1---o---o---o stable
/ \ \
o---o---o---2---o---o---o---o devel
\
o---o---o customers/acme_patches?
现在我想知道:
customers/acme_patches分叉的是什么分支- devel或者stable?我只是知道它过去曾分离过其中一个,但我不知道哪个.例如它可能已经提交1或2在上图中.
我一直在玩git log --oneline --graph,gitk但自从customers/acme_patches分开了几百次提交之后,很难按照画出的线条.
是否有一个快速命令(一个小脚本也可以),它可以以某种方式跟随提交customers/acme_patches向后找到第一个提交有两个孩子(叉点),然后确定是否在stable或在中提交devel?
在最好的情况下,我可以执行类似的操作(请原谅,我在Windows上):
C:\src> git fork-origin customers/acme_patches
stable
Run Code Online (Sandbox Code Playgroud)