Skip to content

Commit 9e64c9d

Browse files
committed
git config
1 parent 244a404 commit 9e64c9d

File tree

1 file changed

+52
-25
lines changed

1 file changed

+52
-25
lines changed

home/git.nix

Lines changed: 52 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -43,23 +43,55 @@
4343
dsc = "-c delta.side-by-side=true dc";
4444
fixup = "commit --fixup";
4545
fi = "commit --fixup";
46-
l = "log --pretty=format:'%C(yellow)%h\ %C(green)%ad%Cred%d\ %Creset%s%Cblue\ [%an]' --date=relative -32";
47-
lg = "l --graph --boundary --cherry-mark";
48-
ld = "log --cherry --pretty=format:'%m\ %C(yellow)%h\ %C(green)%ad%Cred%d\ %Creset%s%Cblue\ [%an]' --date=relative -32";
49-
lp = "-c delta.side-by-side=true log --pretty=format:'%C(yellow)commit %h\ %C(green)%ad%Cred%d\ %Creset%s%Cblue\ [%an]' --date=relative -16 -p -- :^vendor :^go.mod :^go.sum"; # include "commit " for delta `n` navigation
50-
new = "l @{u}..";
46+
# base log
47+
log-pretty = "log --pretty=format:'%C(yellow)%h\ %C(green)%ad%Cred%d\ %C(reset)%s%C(blue)\ [%an]' --date=relative";
48+
# verbose log, i.e. with cherry marks
49+
log-pretty-verbose = "log --cherry-mark --pretty=format:'%C(yellow)%h %C(cyan)%m %C(green)%ad%C(red)%d %C(reset)%s%C(blue) [%an]' --date=relative";
50+
# aliases for use
51+
l = "!f() {
52+
if [ -z \"$1\" ]; then
53+
if [ \"$(git main)\" = \"$(git rev-parse --abbrev-ref HEAD)\" ]; then
54+
git log-pretty -32
55+
else
56+
git log-pretty $(git main)..
57+
fi
58+
else
59+
git log-pretty $1
60+
fi
61+
}; f";
62+
lv = "!f() {
63+
if [ -z \"$1\" ]; then
64+
if [ \"$(git main)\" = \"$(git rev-parse --abbrev-ref HEAD)\" ]; then
65+
git log-pretty-verbose -32
66+
else
67+
git log-pretty-verbose --no-merges $(git main)...
68+
fi
69+
else
70+
git log-pretty-verbose --no-merges $1
71+
fi
72+
}; f";
73+
lg = "!f() {
74+
if [ -z \"$1\" ]; then
75+
git log-pretty-verbose --graph --boundary --cherry-mark $(git main)...
76+
else
77+
git log-pretty-verbose --graph --boundary --cherry-mark $1
78+
fi
79+
}; f";
80+
new = "log-pretty @{u}...";
5181
p = "pull --prune --all --autostash";
5282
puf = "push --force-with-lease --force-if-includes";
53-
rb = "rebase --autostash --autosquash";
83+
rb = "rebase";
5484
rba = "rebase --abort";
5585
rbc = "rebase --continue";
86+
ours = "restore --ours";
87+
theirs = "restore --theirs";
5688
s = "status --short";
5789
sh = "show --stat";
5890
sw = "switch";
5991

6092
# repo path
6193
root = "rev-parse --show-toplevel"; # print root
62-
cr = "!f() {cd $(git rev-parse --show-toplevel)}"; # change to root
94+
cd = "!f() {cd $(git rev-parse --show-toplevel)}"; # change to root
6395
exec = "!exec "; # make from wherever
6496

6597
# files from index or from commits
@@ -75,23 +107,10 @@
75107
main = "!f() { git symbolic-ref refs/remotes/origin/HEAD --short | cut -d/ -f2; }; f";
76108

77109
# fast ops on main/master
78-
pm = "!f() { test $(git rev-parse --abbrev-ref HEAD) != $(git main) && git fetch origin $(git main):$(git main) || git p; }; f"; # pull main
79-
bd = "!f() {
80-
git pm || return;
81-
for branch in $(git for-each-ref --format '%(refname:short)' refs/heads | grep -vE '^main$|^master$')
82-
do
83-
echo;
84-
if git log --cherry --pretty=format:'%m\ %C(yellow)%h\ %C(green)%ad%Cred%d\ %Creset%s%Cblue\ [%an]' --date=relative $(git main)...$branch | grep --silent -E '^>';
85-
then
86-
echo \"$branch is unmerged:\";
87-
git log --cherry --pretty=format:'%m\ %C(yellow)%h\ %C(green)%ad%Cred%d\ %Creset%s%Cblue\ [%an]' --date=relative $(git main)...$branch;
88-
else
89-
git branch -D $branch;
90-
fi
91-
done
92-
}; f";
93-
rbmi = "!f() { git pm && git rb -i $(git main); }; f"; # rebase interactively on main
94-
rbm = "!f() { git pm && git rb $(git main); }; f"; # rebase on main
110+
pull-main = "!f() { test $(git rev-parse --abbrev-ref HEAD) != $(git main) && git fetch origin $(git main):$(git main) || git p; }; f"; # pull main
111+
pm = "pull-main";
112+
rbmi = "!f() { git pull-main && git rb -i $(git main); }; f"; # rebase interactively on main
113+
rbm = "!f() { git pull-main && git rb $(git main); }; f"; # rebase on main
95114

96115
# update PR with unstaged
97116
rekt = "!f() { git a -u; git amend; git puf; }; f"; # add updates to amend commit and force push
@@ -101,6 +120,9 @@
101120
"*.swp"
102121
];
103122
extraConfig = {
123+
advice = {
124+
skippedCherryPicks = false;
125+
};
104126
branch.sort = "-committerdate";
105127
commit.gpgsign = true;
106128
core = {
@@ -110,19 +132,24 @@
110132
gpg.format = "ssh";
111133
init.defaultBranch = "main";
112134
log.date = "local";
135+
merge = {
136+
autostash = true;
137+
conflictStyle = "zdiff3";
138+
};
113139
pull.rebase = true;
114140
push = {
115141
default = "current";
116142
autoSetupRemote = true;
117143
};
118144
rebase = {
145+
stat = true;
119146
autosquash = true;
120147
autostash = true;
121148
updateRefs = true;
122149
};
123-
merge.autostash = true;
124150
rerere.enabled = true;
125151
tag.sort = "version:refname";
152+
trim.confirm = false;
126153
url."ssh://[email protected]/".insteadOf = "https://github.com/";
127154
user.signingkey = "~/.ssh/id_ed25519";
128155
};

0 commit comments

Comments
 (0)