Wie Stefan Näwe unten anmerkt, laufen Aliase im Stammverzeichnis Ihres Repositorys. Gibt es eine Möglichkeit, den Befehl in dem Verzeichnis auszuführen, in dem ich mich befinde, oder anzugeben?
Sieht aus wie du willst git shortlog -sn übrigens.
– Patthoyten
12. Januar 2012 um 12:30 Uhr
@patthoyts, füge das als Antwort hinzu und es wird ein Häkchen bekommen!
– Stuart Grimshaw
12. Januar 12 um 16:58 Uhr
Andrej Neculau
Gibt es eine Möglichkeit, den Befehl in dem Verzeichnis auszuführen, in dem ich mich befinde, oder anzugeben?
Ja da ist. Wenn Sie einen Git-Befehl ausführen, erhält Ihre Umgebung eine GIT_PREFIX Variable mit dem Wert des relativen Pfads (von der obersten Ebene zum Pfad vor der Ausführung von git). Was Sie also brauchen, ist, Ihren Git-Aliassen (die Shell-Befehle ausführen und das richtige pwd benötigen) ein Präfix voranzustellen cd ${GIT_PREFIX:-.} &&.
Einfacher Test, fügen Sie dies zu Ihrem hinzu ~/.gitconfig
[alias]
p = !pwd && cd ${GIT_PREFIX:-.} && pwd
Zur Erläuterung der ${GIT_PREFIX:-.} Syntax finden Sie unter: stackoverflow.com/a/16753536/79111.
– Ton van den Heuvel
11. August 16 um 13:31 Uhr
Stefan Näwe
gits Aliase mit a Shell-Befehl (d. h. mit vorangestelltem !) in der obersten Ebene des Arbeitsverzeichnisses ausgeführt (wo die .git Leben). Einfache Aliase (ohne !) im aktuellen Verzeichnis ausführen.
Danke Stefan, das hat meine ursprüngliche Frage beantwortet, ich habe es jetzt geändert, um es hoffentlich für andere in der gleichen Situation nützlicher zu machen.
– Stuart Grimshaw
12. Januar 12 um 23:52 Uhr
Dies ist ein ziemlich unintuitives Git-Verhalten. Weiß jemand, wie man einen Alias im aktuellen Verzeichnis ausführt? Oder ob das aktuelle Verzeichnis in einer Umgebungsvariable oder so verfügbar ist, damit ein Alias kann cd vor dem Laufen wieder an die richtige Stelle?
– Jim Stewart
20. November 13 um 17:04 Uhr
@JimStewart siehe Andrei Neculaus Antwort oben, sie zeigt, wie man genau das macht 🙂
– waldreich
4. April 16 um 18:45 Uhr
Wenn Sie sich ansehen, was Sie tun, möchten Sie wahrscheinlich verwenden git shortlog -sn stattdessen, da dies die betreffende Aufgabe bereits erledigt.
Git-Aliase werden nicht alle auf der obersten Ebene ausgeführt. Wie im beschrieben Git-Konfigurationshandbuch “Beachten Sie, dass Shell-Befehle aus dem Verzeichnis der obersten Ebene eines Repositorys ausgeführt werden, das nicht unbedingt das aktuelle Verzeichnis sein muss.” Auf der obersten Ebene werden also nur Shell-Befehle ausgeführt. Wenn Sie einfach einen git-Unterbefehl aliasieren, wird er an der aktuellen Position ausgeführt. Das folgende Sitzungsprotokoll zeigt dies:
Ihr Beispiel verwendet einen Alias-Befehl, der mit „git“ beginnt. Wenn ich versuche, ‘git rev-parse –show-cdup’ als Alias festzulegen, wird ein Fehler zurückgegeben, der besagt, ‘git is not a git command’, also vermute ich, dass Sie tatsächlich auch ein Ausrufezeichen hatten und es daher als Shell-Befehl ausführen läuft von der obersten Ebene.
.
6462200cookie-checkWarum liefert das Ausführen des Befehls als Git-Alias unterschiedliche Ergebnisse?yes
Sieht aus wie du willst
git shortlog -sn
übrigens.– Patthoyten
12. Januar 2012 um 12:30 Uhr
@patthoyts, füge das als Antwort hinzu und es wird ein Häkchen bekommen!
– Stuart Grimshaw
12. Januar 12 um 16:58 Uhr