diff --git a/bin/git-pick b/bin/git-pick new file mode 100755 index 0000000..ded8243 --- /dev/null +++ b/bin/git-pick @@ -0,0 +1,16 @@ +#!/bin/sh + +mkdir -p "$(git rev-parse --git-dir)/fzf" +history="$(git rev-parse --git-dir)/fzf/history" +null=$(printf "\0") + +IFS='' +git status --porcelain | while read line +do + path=$(echo $line | cut -b 4-) + type=$(echo $line | cut -b -3) + /bin/echo -e "$type\x00$(basename $path)\x00$path" +done \ + | fzf --multi --with-nth=2 -d '\0' -q "$*" --history=$history \ + --preview='if [ ${1} = "??" ]; then /bin/echo -e "\x1b[32m"; cat {3}; else git diff --color {3}; fi' \ + | cut -d "$null" -f 3- diff --git a/gitconfig b/gitconfig index 72f9637..7a46740 100644 --- a/gitconfig +++ b/gitconfig @@ -20,7 +20,8 @@ [alias] adog = log --all --decorate --oneline --graph --date-order dog = log --decorate --oneline --graph --date-order - fadd = "! git pick-modified | xargs --open-tty git add" + fadd = "! git pick | xargs --open-tty git add" + fig = "! git pick | xargs -L1 git ignore" faddall = "! git status --porcelain | cut -b 4- | fzf --multi --layout=reverse-list | xargs --open-tty git add" fixup = "!git commit --patch --no-edit --amend $(git diff --name-only HEAD~1..HEAD)" h = log -1 --format=%h @@ -34,8 +35,6 @@ track = add --intent-to-add ts = timeshift reword = commit --amend --no-verify - pick-modified = "! git status --porcelain | sed '/^??/d' | cut -b 4- | fzf --multi --layout reverse-list" - pm = pick-modified [user] useConfigOnly = true [user "darkwiiplayer"]