如何在Git中的分支上获取更改

How to get the changes on a branch in Git

自分支从当前分支分支分支以来,获取分支上提交日志的最佳方法是什么?到目前为止,我的解决方案是:

1
git log $(git merge-base HEAD branch)..branch

git diff的文档表明git diff A...B相当于git diff $(git-merge-base A B) B。另一方面,Git Rev Parse的文档表明r1...r2被定义为r1 r2 --not $(git merge-base --all r1 r2)

为什么这些不同?请注意,git diff HEAD...branch提供了我想要的差异,但是相应的git log命令提供的比我想要的更多。

在图片中,假设:

1
2
3
         x---y---z---branch
        /
---a---b---c---d---e---HEAD

我想要一个包含提交x,y,z的日志。

  • git diff HEAD...branch给出了这些承诺
  • 但是,git log HEAD...branch给出了x、y、z、c、d、e。


在当前的研究中,A...B就是git-rev-parse定义它。把需要修改的日志列表。git-diff不以列表的修改-它需要1-2个蛛网膜下腔出血(SAH)的定义和修改,A...B语法知识到它的均方根git-diff手册中定义的。如果没有明确的定义git-diffA...B,那么这将是无效的语法。请注意,本手册中介绍git-rev-parseA...B"和指定的范围"一节,这一切仅仅是一条有效的情况下在该版本中的有效范围(即是所需的修改列表时)。

日志就得到含x,y,z),(二)git log HEAD..branch试点,三)。这是对所有相同的均值和git log branch --not HEAD提交在线分公司,这是不是在线头。


1
git cherry branch [newbranch]

是什么让你问,当你在master分行。

我也很喜欢:

1
git diff --name-status branch [newbranch]

这是不是是你要求的,但仍然是非常有用的上下文中。


你想要看到的是即将离任的邮件列表。你可以这样使用

1
git log master..branchName

1
git log master..branchName --oneline

"我认为在branchname"是由跟踪分行的"大师"。

同样,你可以使用传入的变化看:

1
git log branchName..master


这是一个类似的答案发布时间:一天推在线预览

这些功能将删除你的数据库:

  • gbout -即将离任的分支
  • 希望能收到你的Git分支

你可以使用这个类。

  • 如果在线大师:希望能branch1<--这你会表演什么的在branch1和不在主
  • 如果在线大师:gboutbranch1<这将显示你是什么这是不是在主分公司1

这将与任何公司工作。

1
2
3
4
5
6
7
8
9
10
11
12
13
function parse_git_branch {
  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}

function gbin {
    echo branch \($1\) has these commits and \($(parse_git_branch)\) does not
    git log ..$1 --no-merges --format='%h | Author:%an | Date:%ad | %s' --date=local
}

function gbout {
    echo branch \($(parse_git_branch)\) has these commits and \($1\) does not
    git log $1.. --no-merges --format='%h | Author:%an | Date:%ad | %s' --date=local
}

亚历克斯回答类似的几类和ndavis V的,但它们是很不相同的。

当已经在分支中的问题

使用:

1
git diff master...

这种结合的几个特点:

  • 它的超短裤
  • 显示当前的变化

更新:

这应该是一git diff master可能不同,但也显示了,没有指定的邮件的问题。


掷中,P -有看到一些文件。

1
git log -p master..branch

别名:make some

1
2
3
alias gbc="git branch --no-color | sed -e '/^[^\*]/d' -e 's/* \\(.*\\)/\1/'"

alias gbl='git log -p master..\`gbc\`'

国有企业分公司的独特的承诺:

1
gbl


给当前的日志从主分断:开叉

git log master...

如果你对目前在线的高手,看到不同的分支,因为它的日志院:从主分支

git log ...other-branch


1
git log --cherry-mark --oneline from_branch...to_branch

但有时它显示(3dots)"+"而不是"="


我发现

1
git diff <branch_with_changes> <branch_to_compare_to>

更多有用的,因为你只把这个消息,但整个不同的提交。如果你已经在你想看到的变化分和(例如)是改变了对国有企业要有主,你可以使用:

1
git diff HEAD master