| git-upstream-diff(1) |
| ==================== |
| |
| NAME |
| ---- |
| git-upstream-diff - |
| include::_git-upstream-diff_desc.helper.txt[] |
| |
| SYNOPSIS |
| -------- |
| [verse] |
| 'git upstream-diff' [--wordwise] [--branch branch] [<extra args for git-diff>*] |
| |
| DESCRIPTION |
| ----------- |
| |
| Shows a diff between a branch and its upstream. If the --branch option is |
| omitted or "HEAD", the tool shows the diff for the current branch. Any |
| additional arguments are passed through to the underlying git-diff command. This |
| is 'roughly' the same as: |
| |
| ---- |
| git diff --patience -C -C branch@{upstream} <1> <2> |
| ---- |
| <1> `-C -C` detects file copies/renames |
| <2> `--patience` uses the patience-diff algorithm, which tends to produce nicer |
| diffs in many cases. |
| |
| The difference is that `branch@{upstream}` is actually the tagged merge base of |
| your branch (See linkgit:git-rebase-update[1]). This means that if your upstream |
| branch was rebased, but you haven't yet rebased the current branch on top of it, |
| you'll still see an accurate diff compared to just diffing against |
| `@{upstream}`. |
| |
| The `--wordwise` option also allows `git-diff` to do word-by-word comparison |
| in a semi-intelligent way. However, sometimes it can produce surprising results, |
| so it is disabled by default. |
| |
| Since any additional options are passed through to git-diff unchanged, you can |
| use this as a general replacement for `git diff` for things like: |
| |
| ---- |
| $ # See what changed in a file on the current branch |
| $ git upstream-diff some/file.py |
| ... |
| |
| $ # Omit deleted files from the diff |
| $ git upstream-diff --diff-filter d |
| ... |
| |
| $ # etc. |
| ---- |
| |
| |
| OPTIONS |
| ------- |
| |
| --wordwise:: |
| Print a colorized word-wise diff instead of a line-wise diff. |
| |
| --branch branch:: |
| Show a diff between the specified branch and its upstream, instead of using |
| the current branch. |
| |
| <extra args for git-diff>:: |
| Extra arguments are included in the invocation of linkgit:git-diff[1]. These |
| can be anything that `git-diff` normally takes. |
| + |
| -- |
| `--stat`;; |
| This is particularly useful to show 'which' files have been changed in |
| comparison to the upstream branch. |
| `--staged`;; |
| Diff against the staged (cached) changes, instead of against the working |
| directory. This is 'substantially' faster on large repos, but doesn't take |
| into account unstaged changes (i.e. changes in your working copy which you |
| haven't staged with `git add`). |
| `-- <filename patterns>*`;; |
| Restrict the diff to only show the diff for given files compared to the |
| upstream. |
| -- |
| |
| |
| CONFIGURATION VARIABLES |
| ----------------------- |
| |
| depot-tools.upstream-diff.default-args |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| A list-configuration variable. Each instance of this config variable will be |
| prepended to all invocations of `git upstream-diff`, as if you had passed them |
| on the command line. |
| |
| include::_aliases.txt[] |
| |
| ---- |
| [alias] |
| git udiff = upstream-diff |
| ---- |
| |
| SEE ALSO |
| -------- |
| linkgit:git-rebase-update[1] |
| |
| include::_footer.txt[] |
| |
| // vim: ft=asciidoc: |