Ricerca…


Alias ​​semplici

Ci sono due modi per creare alias in Git:

  • con il file ~/.gitconfig :
[alias]
    ci = commit
    st = status
    co = checkout
  • con la riga di comando:
 git config --global alias.ci "commit"
 git config --global alias.st "status"
 git config --global alias.co "checkout"

Dopo aver creato l'alias, digita:

  • git ci invece di git commit ,
  • git st invece di git status ,
  • git co invece di git checkout .

Come con i normali comandi git, gli alias possono essere usati accanto agli argomenti. Per esempio:

 git ci -m "Commit message..."
 git co -b feature-42

Elenca / cerca gli alias esistenti

Puoi elencare gli alias git esistenti usando --get-regexp :

$ git config --get-regexp '^alias\.'

Ricerca di alias

Per cercare alias , aggiungi quanto segue al tuo .gitconfig in [alias] :

aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"

Allora puoi:

  • git aliases : mostra TUTTI gli alias
  • git aliases commit - solo alias contenenti "commit"

Alias ​​avanzati

Git ti permette di usare comandi non git e la sintassi completa di sh shell nei tuoi alias se li prefissi ! .

Nel tuo file ~/.gitconfig :

[alias]
    temp = !git add -A && git commit -m "Temp"

Il fatto che la sintassi completa della shell sia disponibile in questi alias prefissi significa anche che è possibile utilizzare le funzioni della shell per costruire alias più complessi, come quelli che utilizzano gli argomenti della riga di comando:

[alias]
    ignore = "!f() { echo $1 >> .gitignore; }; f"

L'alias precedente definisce la funzione f , quindi la esegue con qualsiasi argomento passato all'alias. Quindi git ignore .tmp/ aggiungerebbe .tmp/ al file .gitignore .

In effetti, questo modello è così utile che Git definisce per te variabili di $1 , $2 , ecc., Quindi non devi neanche definire una funzione speciale per questo. (Ma tieni presente che Git aggiungerà comunque gli argomenti, anche se l'accesso avviene tramite queste variabili, quindi potresti voler aggiungere un comando fittizio alla fine.)

Si noti che gli alias hanno il prefisso ! in questo modo vengono eseguiti dalla directory principale del tuo git checkout, anche se la tua directory corrente è più profonda nella struttura. Questo può essere un modo utile per eseguire un comando dalla radice senza doverli cd esplicitamente.

[alias]
    ignore = "! echo $1 >> .gitignore"

Ignora temporaneamente i file tracciati

Per contrassegnare temporaneamente un file come ignorato (passa il file come parametro per l'alias) - digitare:

unwatch = update-index --assume-unchanged

Per avviare nuovamente il file di tracciamento, digita:

watch = update-index --no-assume-unchanged

Per elencare tutti i file che sono stati temporaneamente ignorati - digitare:

unwatched = "!git ls-files -v | grep '^[[:lower:]]'"

Per cancellare l'elenco non selezionato, digitare:

watchall = "!git unwatched | xargs -L 1 -I % sh -c 'git watch `echo % | cut -c 2-`'"

Esempio di utilizzo degli alias:

git unwatch my_file.txt
git watch my_file.txt
git unwatched
git watchall

Mostra un bel registro con un grafico di ramo

[alias]
  logp=log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short

  lg =  log --graph --date-order --first-parent \
     --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
  lgb = log --graph --date-order --branches --first-parent \                      
     --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
 lga = log --graph --date-order --all \                                          
   --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'

Ecco una spiegazione delle opzioni e dei segnaposto usati nel formato - --pretty (la lista esauriente è disponibile con il git help log )

--graph - disegna l'albero di commit

--date-order - usa l'ordine di timestamp del commit quando possibile

--first-parent - segui solo il primo genitore sul nodo unione.

--branches - mostra tutti i rami locali (per impostazione predefinita, viene mostrato solo il ramo corrente)

--tutto - mostra tutti i rami locali e remoti

% h - valore hash per commit (abbreviato)

% annuncio - Data timbro (autore)

% a - Nome utente dell'autore

% a - Impegna il nome utente

% C (auto): per utilizzare i colori definiti nella sezione [colore]

% Creset: per ripristinare il colore

% d - --decorate (nomi di branch e tag)

% s - messaggio di commit

% annuncio - data dell'autore (seguirà la direttiva --data) (e non la data del committente)

% un - nome dell'autore (può essere% cn per il nome del committente)

Aggiornamento del codice mantenendo una cronologia lineare

A volte è necessario mantenere una cronologia lineare (non ramificata) del proprio codice. Se lavori su un ramo per un po 'di tempo, questo può essere complicato se devi fare una git pull regolare dato che registrerà un'unione con upstream.

[alias]
  up = pull --rebase

Questo si aggiornerà con il tuo sorgente upstream, quindi riapplicherà qualsiasi lavoro che non hai spinto in cima a quello che hai tirato giù.

Usare:

git up

Guarda quali file vengono ignorati dalla tua configurazione .gitignore

[ alias ]

    ignored = ! git ls-files --others --ignored --exclude-standard --directory \
            && git ls-files --others -i --exclude-standard

Mostra una riga per file, quindi puoi grep (solo directory):

$ git ignored | grep '/$'
.yardoc/
doc/

O contare:

~$ git ignored | wc -l
199811                 # oops, my home directory is getting crowded

Scansa i file in scena

Normalmente, per rimuovere i file che vengono messi in scena per essere impegnati usando il commit di re git reset , reset ha molte funzioni a seconda degli argomenti forniti. Per rimuovere completamente lo staging di tutti i file, possiamo fare uso di alias git per creare un nuovo alias che usa reset ma ora non abbiamo bisogno di ricordarci di fornire gli argomenti corretti da reset .

git config --global alias.unstage "reset --"

Ora, ogni volta che vuoi scaricare i file degli stadi, digita git unstage e sei a posto.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow