I often rebase my feature branches, just by pulling the origin (see the [pull] rebase=true below) or interactive rebases
here's my .gitconfig:
[alias]
a = add --all
au = add -u
# b = rev-parse --abbrev-ref HEAD
b = branch
compare = "!f(){ git rev-list --count --left-right "${2:+$1}...${2:-$1}" | { read ahead behind; printf 'ahead: %s\tbehind: %s\n' $ahead $behind; } };f"
bd = for-each-ref --sort='-committerdate:iso8601' --format=' %(committerdate:iso8601)%09%(refname)' refs/heads
br = rev-parse --abbrev-ref HEAD
am = commit --amend -C HEAD
ci = "!f() { git commit -m \"$*\"; }; f"
ca = commit --amend
cl = clone --no-tags #--single-branch
clgh = "!f() { git clone --no-tags git@github.com:$@; }; f"
co = checkout
cp = cherry-pick
cpa = cherry-pick --abort
cpc = cherry-pick --continue
d = diff
do = diff --name-only
dp = diff --patience
dc = diff --cached
f = fetch
fo = fetch origin
g = grep -p
l = log --oneline
lg = log --oneline --graph --decorate --date-order
ls = ls-files
m = merge
mf = merge --ff-only
mff = merge --ff-only
ma = merge --abort
mc = merge --continue
ms = merge --skip
p = push
pf = push -f
pu = "!f() { git push -u ${1:-origin} ${2:-$(git rev-parse --abbrev-ref HEAD)}; }; f"
pl = pull
rb = rebase
rba = rebase --abort
rbc = rebase --continue
rbi = rebase --interactive
rbs = rebase --skip
rehh = reset --hard HEAD
r = remote
ra = remote add
ragh = "!f() { repo=$(git r get-url origin 2> /dev/null || pwd); git remote add ${1:-origin} git@github.com:${2:-caub/$(basename $repo)}; }; f"
rr = remote rm
rv = remote -v
rs = remote show
rn = remote rename
rao = remote add origin
rro = remote remove origin
rsu = remote set-url
rsuo = remote set-url origin
rsuogh = "!f() { git remote set-url origin git@github.com:$1; }; f"
s = status
sb = status -s -b
sw = stash show
st = !git stash list | wc -l 2>/dev/null | grep -oEi '[0-9][0-9]*'
[core]
editor = vim # +startinsert!
excludesfile = ~/.gitignore
hooksPath = ~/.hooks
[pull]
rebase = true
[fetch]
prune = true
[rebase]
autoStash = true