Reputation: 281
I'm using the github windows shell and I'll do the following
git status
see a list of modified files and want to remind myself what's changed. I'll have to type something like
git diff Source\FooBar\Pages\FooBar.aspx
That seems like a lot of characters to have to type. Is there some easier workflow to look at diffs that I'm not seeing?
Upvotes: 28
Views: 4457
Reputation: 1
# A quick and crude idea:
function gitdiff()
{
# git diff returns repo relative names, so we must add the
# the git root, i.e. parent of the git dir.
# This may not work in all git repo styles?
local GIT_FILES_ROOT="$(git rev-parse --git-dir)/.."
git diff -- "${GIT_FILES_ROOT}/${1}"
}
function _dp_git_diff_complete()
{
local cur
cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=($(git diff --name-only | \egrep "^$cur"))
}
complete -F _dp_git_diff_complete gitdiff
# However, you must use:
# $ gitdiff [prefix]<tab>
# not:
# $ git diff [prefix]<tab>
# because I don't know how to make a completion for a multi-word command,
# e.g. git diff.
# Of course, you can use any other name you'd like besides `gitdiff'
# This will suck if the diff command needs additional options or parameters.
# There are ways to tell the completion API to handle options, but it's not a
# short topic.
Upvotes: 0
Reputation: 529
git diff -- **/FooBar.aspx
In general *
stands for any part of a filename while **
stands for any subpath. E.g. git diff -- **/main/**/*.aspx
will diff only aspx
files that are residing somewhere in a subdirectory of main
or main
itself. This applies to other commands that accept paths, like commit and add.
Upvotes: 41
Reputation: 4319
most terminals (e.g. console2 for windows) have auto-completion.
start typing and press tab
usually git can auto-complete after 2 characters. like:
gi tab
di tab
will give you git diff. if your folders are not named similarly than it might auto-complete after a single character. like if your project root had three files:
you could simply type r
, s
, or b
then tab to auto-type any of those file names.
fyi, auto complete works for terminal and git commands, file and directory names, branch and tag names, but unfortunately not for commit ids.
Upvotes: 0
Reputation: 15701
I use Console2 to host bash.
With this I'm able to use Ctrl + Click and Drag to highlight text which can then be copied to the clipboard and pasted into further command lines.
I use this to copy file paths.
This enabled me to type git diff [Ctrl+V] and get the command line I want.
Upvotes: 1
Reputation: 43970
If you want to review all changes, you can simply use git diff
. It will not list new files, though.
To selectively look at changes, I would recommend to use a GUI, e.g., git gui
or gitk
.
Upvotes: 1