You may choose to pull a branch using only fast forward if you only want non-conflicting changes brought in and never want a merge executed. Now, if you would prefer to pull a branch only using fast forwarding, you can append the --ff-only flag to the git pull command.
In the context of a revision list, A...B
is how git-rev-parse
defines it. git-log takes a revision list. git-diff
does not take a list of revisions - it takes one or two revisions, and has defined the A...B
syntax to mean how it's defined in the git-diff
manpage. If git-diff
did not explicitly define A...B
, then that syntax would be invalid. Note that the git-rev-parse
manpage describes A...B
in the "Specifying Ranges" section, and everything in that section is only valid in situations where a revision range is valid (i.e. when a revision list is desired).
To get a log containing just x, y, and z, try git log HEAD..branch
(two dots, not three). This is identical to git log branch --not HEAD
, and means all commits on branch that aren't on HEAD.
git cherry branch [newbranch]
does exactly what you are asking, when you are in the master
branch.
I am also very fond of:
git diff --name-status branch [newbranch]
Which isn't exactly what you're asking, but is still very useful in the same context.
What you want to see is the list of outgoing commits. You can do this using
git log master..branchName
or
git log master..branchName --oneline
Where I assume that "branchName" was created as a tracking branch of "master".
Similarly, to see the incoming changes you can use:
git log branchName..master
This is similar to the answer I posted on: Preview a Git push
Drop these functions into your Bash profile:
You can use this like:
This will work with any branch.
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
}
Similar to several answers like Alex V's and NDavis, but none of them are quite the same.
When already in the branch in question
Using:
git diff master...
Which combines several features:
Update:
This should probably be git diff master
, but also this shows the diff, not the commits as the question specified.
Throw a -p in there to see some FILE CHANGES
git log -p master..branch
Make some aliases:
alias gbc="git branch --no-color | sed -e '/^[^\*]/d' -e 's/* \\(.*\\)/\1/'"
alias gbl='git log -p master..\`gbc\`'
See a branch's unique commits:
gbl
To see the log of the current branch since branching off master:
git log master...
If you are currently on master, to see the log of a different branch since it branched off master:
git log ...other-branch
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With