Ich versuche, einen Alias zu schreiben, um sowohl einen lokalen als auch einen Remote-Zweig gleichzeitig zu löschen, aber ich kann nicht herausfinden, warum die Syntax nicht funktioniert. In ~/.gitconfigich habe die folgenden Aliase ausprobiert, aber jeder führt zu demselben Ergebnis, was unerwartet ist:
Ich habe versucht, einen Alias in zu erstellen ~/.bashrcverwenden git push origin --delete $1 und mit einer Shell-Funktion mit !f() { }; und nichts scheint zu nehmen!
Ich bin bereit aufzugeben. Irgendwelche Gedanken darüber, was ich hier vermisse?
Vielen Dank.
John Szakmeister
Sie können diese Arbeit gut machen. Sie müssen nur ein fehlendes ‘-‘ am Ende Ihrer Definition hinzufügen. Das ‘-‘ signalisiert bash, dass die gesamte Optionsverarbeitung abgeschlossen ist, und alles, was danach kommt, wird zu einem Parameter, über den Sie referenzieren können $1, $2etc:
Wechseln Sie von der Befehlszeile zu einem anderen Zweig und führen Sie dann den Befehl aus:
git nuke branch-name
Alternativ… Wenn Sie das Obige nicht zu Ihrem hinzufügen können .gitconfig Datei aus irgendeinem Grund, aber Zugriff auf die .bashrc, .bash_profileetc… können Sie Folgendes hinzufügen:
Wenn Sie eine Bin namens erstellen git-nuke und platzieren Sie es in einem beliebigen Verzeichnis auf Ihrer $PATH, erzielen Sie den gleichen Effekt. Der Vorteil bei diesem Ansatz ist die Möglichkeit, einen Befehl etwas klarer und robuster zu schreiben.
Beispiel, in meinem Bash-Profil habe ich: export PATH="$HOME/.bin:$PATH".
Und in ~/.bin/git-nukeIch habe:
#!/bin/bash
set -eu
#
# git nuke <branch-name>
#
# Delete a branch (irrespective of its merged status) and
# remove from origin.
#
echo "Nuking $1 ..."
if git show-branch "$1" > /dev/null 2>&1
then
git branch -D "$1"
else
echo "No local branch to delete"
fi
git remote prune origin
if git show-branch "origin/$1" > /dev/null 2>&1
then
echo "Deleting remote $1 ..."
git push origin ":$1"
else
echo "No remote branch to delete"
fi
Ein weiterer Vorteil davon ist, dass Sie die automatische Vervollständigung hinzufügen können.
– Oliver Joseph Ash
20. Juli 2016 um 14:42 Uhr
Kann ich git dazu bringen, dies als neuen Unterbefehl zu vervollständigen? nuke als ob es als Alias definiert wäre oder muss ich es eingeben git-nuke? in der Schale?
– Nordlöw
20. August 2020 um 19:13 Uhr
Die git-mycmd Trick bedeutet, dass Sie jetzt a mycmd Unterbefehl und wird über aufgerufen git mycmd und die Tab-Vervollständigung funktioniert mit using git my[tab]
– Doug
3. März 2021 um 16:22 Uhr
Sie können nicht verwenden $1 unter einem Pseudonym. Erstellen Sie ein Skript namens git-nuke irgendwo in Ihrem Pfad, damit Sie Zugriff auf das richtige Shell-Scripting haben.
Du könntest auch einfach installieren Git-Extras. Das ist eine Skriptkompilierung, die die enthält git delete-branch Skript, das genau das tut, was Sie wollen.
Ah, danke für den Hinweis. Ich werde wahrscheinlich mit Git-Extras gehen.
– Biegel
24. Mai 2013 um 17:28 Uhr
Bitte sehen Sie sich die Antwort von jszakmeister an kann verwenden $1 unter einem Pseudonym.
– Benutzer456814
25. Mai 2013 um 5:37 Uhr
Während die Antwort von jszakmeister in der Tat eine nette Lösung ist, können Sie sie immer noch nicht verwenden $1 unter einem Pseudonym. sh tut das $1 Handhabung dort. Die Argumente zu einem Alias werden immer daran angehängt.
– Chronisch
25. Mai 2013 um 10:20 Uhr
14394200cookie-checkgit alias, um lokal und remote zu löschenyes