File tree 2 files changed +25
-0
lines changed
2 files changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -50,6 +50,7 @@ alias ff="fzf_find_edit"
50
50
alias ffg=" fzf_grep_edit"
51
51
52
52
alias ga=" fzf_git_add"
53
+ alias gd=" fzf_git_diff"
53
54
alias gl=" fzf_git_log"
54
55
alias gpx=" fzf_git_log_pickaxe"
55
56
alias gr=" fzf_git_reset"
Original file line number Diff line number Diff line change @@ -101,6 +101,30 @@ fzf_git_add() {
101
101
102
102
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
103
103
104
+ # Fuzzy git diff
105
+
106
+ fzf_git_diff () {
107
+
108
+ # https://stackoverflow.com/a/45111524
109
+
110
+ local files=$(
111
+ git diff " $@ " --name-only |
112
+ xargs -I ' {}' realpath \
113
+ --relative-to=. " $( git rev-parse --show-toplevel) " /' {}' |
114
+ fzf --ansi --no-sort --height 100% \
115
+ --preview " echo {} |
116
+ xargs -I@ sh -c 'git d $* --color=always @'"
117
+ )
118
+
119
+ if [[ -n $files ]]; then
120
+ # shellcheck disable=SC2086
121
+ git d " $@ " $files
122
+ fi
123
+
124
+ }
125
+
126
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
127
+
104
128
# Fuzzy search in git logs.
105
129
106
130
fzf_git_log () {
You can’t perform that action at this time.
0 commit comments