Impostazione dei flag di default git sui comandi

Voglio sapere se c’è un modo per impostare un flag di default per il comando git. Nello specifico, voglio impostare il --abbrev-commit modo tale che durante l’esecuzione di git log , voglio eseguire git log --abbrev-commit .

A differenza della domanda ” c’è un modo per impostare un flag di default per un comando git? “, Apparentemente non c’è un flag di configurazione per aggiungere –abbrev-commit a git log. Inoltre, il manuale git afferma che non posso creare un alias: “Per evitare confusione e problemi con l’uso degli script, gli alias che nascondono i comandi git esistenti vengono ignorati”

La mia terza opzione è inventare un nuovo alias come glog=log --abbrev-commit nel mio file .gitconfig. Ma preferirei non inventare la mia DSL con nuovi comandi.

C’è un altro modo per raggiungerlo in modo che il flag abbrev-commit sia impostato di default ??

Dalla versione 1.7.6 di git, git config ha acquisito un’opzione log.abbrevCommit che può essere impostata su true. Quindi la risposta è l’aggiornamento ad almeno 1.7.6 (attuale al momento della stesura di questo documento è 1.7.11.4) e usare:

 git config --global log.abbrevCommit true 

Puoi usare un formato personalizzato per fare in modo che git log mima --abbrev-commit di default:

 git config format.pretty "format:%h %s" 

Non esiste un meccanismo generico in git per impostare argomenti predefiniti per i comandi.

È ansible utilizzare gli alias git per definire un nuovo comando con gli argomenti richiesti:

 git config alias.lg "log --oneline" 

Quindi puoi eseguire git lg .

Alcuni comandi hanno anche impostazioni di configurazione per cambiare il loro comportamento.

VonC ha già accennato a un involucro di shell nella sua risposta; ecco la mia implementazione Bash di un tale wrapper. Se inserisci questo esempio nel tuo .bashrc , la tua shell intertriggers supporterà l’override dei comandi incorporati di Git e degli alias maiuscoli.

 # Git supports aliases defined in .gitconfig, but you cannot override Git # builtins (eg "git log") by putting an executable "git-log" somewhere in the # PATH. Also, git aliases are case-insensitive, but case can be useful to create # a negated command (gf = grep --files-with-matches; gF = grep # --files-without-match). As a workaround, translate "X" to "-x". git() { typeset -r gitAlias="git-$1" if 'which' "$gitAlias" >/dev/null 2>&1; then shift "$gitAlias" "$@" elif [[ "$1" =~ [AZ] ]]; then # Translate "X" to "-x" to enable aliases with uppercase letters. translatedAlias=$(echo "$1" | sed -e 's/[AZ]/-\l\0/g') shift "$(which git)" "$translatedAlias" "$@" else "$(which git)" "$@" fi } 

È quindi ansible sovrascrivere git log inserendo uno script chiamato git-log da qualche parte nel PATH:

 #!/bin/sh git log --abbrev-commit "$@" 

Ho un problema simile (molte delle opzioni predefinite per i comandi Git sono stupide). Ecco il mio approccio. Crea uno script chiamato ‘grinta’ (o qualsiasi altra cosa) sul tuo percorso, come segue:

 #!/bin/bash cmd=$1 shift 1 if [ "$cmd" = "" ]; then git elif [ $cmd = "log" ]; then git log --abbrev-commit $@ elif [ $cmd = "branch" ]; then git branch -v $@ elif [ $cmd = "remote" ]; then git remote -v $@ else git $cmd $@ fi 

Molto semplice da leggere e mantenere, nel caso in cui è necessario condividerlo con Bash non esperti.

Ogni utility che usiamo (svn, maven, git, …) è sempre incapsulata in un .bat (su Windows o .sh su Unix), per offrire ai nostri sviluppatori una directory da aggiungere al loro percorso.

Se git è incapsulato in uno script wrapper, allora … tutto è ansible.

Ma questa rimane una soluzione collegata alla configurazione dell’utente, non collegata a Git stesso o al repository git.

Mi piace il formato git log --oneline . Per ottenerlo come predefinito, usa

git config --global format.pretty oneline

Credito: https://willi.am/blog/2015/02/19/customize-your-git-log-format/