如何查看合并历史?

22

我正在使用git,但并不是专家。

我继承了一个老项目,它使用git flow(我喜欢这个流程):每个新功能都在feature/name分支上。但是当新功能合并到develop主分支时,它们没有从origin中删除。现在在origin中我看到很多分支,但我不知道哪些是旧的或正在进行中的工作。

是否有一种方式可以查看在特性分支和develop分支之间完成的合并历史记录?

编辑:我在Linux机器上。


你正在使用Windows或Linux。 - Dharani Dharan
3个回答

32

要获取当前分支中进行过合并的提交历史记录,请使用以下命令:

git log --merges

这样做会跳过/忽略快进合并吗? - stdout
正确的做法是快进合并不是真正的合并 - 它们只是一堆提交的堆栈。 - mkrufky

0

我可以提供另一个建议,您可以搜索包含在您的开发分支历史记录中的主要修订版本的分支?这可以保护您免受丢失已提交到先前合并的分支的更改的影响。

大致如此:

git log --oneline develop > /path/develop.log

# Just in case anyone's broken process and committed a bugfix directly to a release branch
git branch -a | grep 'remotes\/origin\/release\/' | while read branch; 
do 
    git log --oneline $branch > /path/"$branch".log; 
done

git branch -r | while read branch;
do
    git log -1 --oneline $branch | awk '{print $1}' | while read commitID;
    do 
        if grep -rq $commitID "/path/" ;
        then 
            echo "git push --delete origin \"$branch\"    Deletable   $commitID";
            break;
        #else 
            # the head revision hasn't been committed to any 'master' branch
            # echo "$branch $commitID"; 
        fi; 
    done; 
done

-2

安装这个

sudo apt-get install git-gui

并运行GUI命令以执行

git gui 

{btsdaf} - Incorporeal Logic
@PaulBeverage 这相当于自相矛盾。我认为这个答案对大多数人来说是一个选项。即使他们不能使用 apt-get,git-gui 也很可能可用。我的意思是,这不仅仅是一些随意的工具。它在 git-scm.com 上被引用。可能不是“最好”的答案,但仍然相关和有帮助。 - Jeff
@Jeff -- 做出一个或多个假设并不趋向于一个好答案的形成,这正是Dharani在这里所做的。同样地,指出一个答案在其核心使用了假设并不会使我的评论“过于批判”。这是一个基于事实和适用性的网站--我个人认为这个答案不适合OP提供的问题背景。另一方面,被接受的答案则在每种情况下都是完全适用的,包括OP的情况。 - Incorporeal Logic
@PaulBeverage 我认为这是“过于苛刻”的,因为回答上有一个踩票,但在这种情况下似乎并不合理(如果踩票不是你的话,那么这是我的错误假设)。OP表示他对git很新,这可能意味着他们会从GUI表示中受益,而不是接受答案的命令行输出。而且OP正在使用Linux。他们提出这个问题并且不使用窗口管理器的发行版似乎是不太可能的。 - Jeff
@PaulBeverage 如果OP已经声明“我正在使用Ubuntu,并且有一个支持git-gui的窗口管理器...”,那么这个答案是否合适?如果你只是“指出答案有一个假设”,你可以说类似于“这假定了一个基于Debian的发行版和一个窗口管理器”而不是“我不能同意”和“答案...[不]合适”。 - Jeff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接