2010-10-25 12 views
16

stavo cercando di impostare alcuni alias git aggiungendo queste righe al mio ~/.gitconfig lima:Git Alias ​​Problema

[alias] 
    st = status 
    ci = commit 
    br = branch 

E quando vado a eseguire questi comandi nel terminale: git st, ottengo il seguente errore fatal: cannot exec 'git-st': Not a directory. Non so quale sia il problema e ho cercato online e non riesco a capire perché lo stia facendo. Sto usando Mac OS 10.6.4 usando Git 1.7.1. Qualcuno, per favore, aiutami. Se non capisco perché lo stia facendo, impazzirò! Grazie!

+0

'git status' funziona correttamente, giusto? – Cascabel

+0

Sì. Tutti i normali comandi funzionano bene, sono solo gli alias che richiamano quell'errore. – agentbanks217

+0

Does 'git config alias.st' print' status'? –

risposta

17

unutbu giustamente sottolineato al git-osx-installer issue 53, in cui si afferma:

Fondamentalmente, ho avuto /root/bin nel mio percorso e non ha avuto autorizzazioni per tale directory.

È interessante notare che questo non era un problema con git 1.6.3, ma era con 1.7.0 e 1.7.1.

Un strace -f -eexecve git st 2>&1 | grep EACC può aiutare a vedere quale directory è il problema:

[pid 6469] execve("/usr/games/bin/git-st", ["git-st"], [/* 72 vars */]) = -1 EACCES 

(in questo caso, il /usr/games/bin/)

Another way per trovare il percorso con il problema è:

echo $PATH |tr ':' '\n' |xargs ls -ld 

Uno dei miei articoli non validi è in realtà una directory montata su NFS che non ho il permesso di accedere perché non sono autenticato tramite Kerberos sul server NFS aziendale.
La rimozione di un elemento da PATH risolve il problema e "git stat" (il mio alias per lo stato) ora funziona.


PeterT menzioni nel commento che si potrebbe non avere strace disponibili (come in Solaris or OsX, come descritto in "Equivalent of strace -feopen <command> on mac os X"), nel qual caso dtruss è un buon equivalente.

dtruss -f -t execve git st 2>&1 | grep EACC 
+1

Che risolto! Ho guardato nel mio ~//bash_profile' per un oggetto vagante nel mio percorso, l'ho trovato, rimosso e ha funzionato. Molte grazie! – agentbanks217

+0

Se non si dispone di strace: 'dtruss -f -t execve git st 2> & 1' –

+0

@PeterT: buon punto. L'ho incluso nella risposta per maggiore visibilità. – VonC

6

Ho avuto questo problema, ma anche con una causa sottilmente diverso:

Nel mio caso il percorso contiene una voce che era un file piuttosto che una directory. Le autorizzazioni sul file stesso e sulla sua directory andavano bene. Quando veniva caricato un nuovo terminale, il file poteva essere eseguito da qualsiasi luogo. Tuttavia, git ha dato un identico messaggio di errore.

Quindi, oltre a cercare le cartelle sul percorso con autorizzazioni errate, suggerisco a chiunque altro con questo problema di controllare anche che il percorso punti solo alle cartelle e non ai file.

+0

Grazie, mi ha aiutato. – Ciryon

0

Trovato lo stesso problema in OSX dopo aver installato Foundation.

La riga di errore nel mio .bash_profile era un percorso di esportazione di base non valido. Non ho rimosso il/foundation alla fine della riga, quindi stava puntando a un file binario, non a una cartella.

Basta ripararlo, ricaricare il terminale e tutto ha funzionato di nuovo.

0

Ho avuto lo stesso problema e questa era una riga .bash_profile mal formattata.

Quando ho installato WP_CLI, è aggiunta la seguente riga alla mia bash_profile

export PATH=/root/.wp-cli/bin:$PATH 

ho dovuto fare un piccolo cambiamento per esso. Sto usando CentOs per quella materia.

export PATH=$PATH:/root/.wp-cli/bin 

Questo ha risolto il problema.

0

Git dispone anche di un comando alias incorporato. comanda

Esempio alias:

git config --global alias.co checkout 
git config --global alias.ci commit 
git config --global alias.st status 
git config --global alias.br branch 
git config --global alias.lola 'log --graph --decorate --pretty=oneline --abbrev-commit --all' 
Problemi correlati