Kann ich Argumente an den Alias eines Git-Befehls übergeben?
Ich habe einen Alias in der Git-Konfiguration, wie folgt:
rb1 = rebase -i HEAD~1
rb2 = rebase -i HEAD~2
rb3 = rebase -i HEAD~3
rb4 = rebase -i HEAD~4
....
Ist es möglich, einen rb
Alias zu erstellen, git rb <x>
der für jeden funktioniert <x>
?
Ich habe diesen Alias ausprobiert:
rb = rebase -i HEAD~
aber dann git rb 8
funktioniert das zum beispiel nicht.
git
git-config
git-alias
Ist f
quelle
quelle
Antworten:
Wenn Sie den Git-FAQ-Abschnitt "Git-Aliase mit Argument" betrachten , können Sie dies tun, indem Sie git über eine Shell aufrufen:
Ich habe es noch nicht getestet, aber wenn Sie ein Argument übergeben können, wäre dies der richtige Weg.
Eine ähnliche Lösung wäre die Verwendung einer Shell-Funktion :
quelle
sh -c
Teil nie ..."!git rebase -i HEAD~$1;"
funktioniert gut für mich.#
Ende setzen: [config] rbi = "! Git rebase -i HEAD ~ $ 1 #""..."..."..."
und nicht"...'...'..."
?Wiederherstellen aller Commits seit der Verzweigung
Wenn Sie nur alle Commits neu erstellen möchten, die in Ihrem Zweig neu sind, ist es seit der Verzweigung vom übergeordneten Zweig einfacher, nur den folgenden Alias in Ihrer Konfiguration zu haben:
Wenn Sie dann alle Commits, die Sie Ihrem aktuellen Zweig hinzugefügt haben, neu festlegen möchten, können Sie einfach Folgendes ausführen:
Bei diesem Ansatz wird ein Argument verwendet. Anstatt jedoch wissen zu müssen, wie viele Commits zurückgehen müssen, geben Sie einfach den Filialnamen an und ermitteln das letzte Commit, das zwischen dem aktuellen Zweig und dem übergeordneten Zweig über geteilt wird
git merge-base
Warum das, anstatt Git Rebase -i ParentBranch
Der Grund, warum Sie dies eher als eine Straße tun würden,
git rebase -i parentBranch
ist, dass Sie sich möglicherweise erst zu einem späteren Zeitpunkt mit den Zusammenführungskonflikten oder sogar mit einem Zusammenführungskonflikt in einem Commit und dann mit demselben Konflikt in derselben Zeile befassen möchten ein weiteres Commit. Siehe https://stackoverflow.com/a/31036645/444610quelle
@Droogans wies in einem Kommentar zu der akzeptierten Antwort darauf hin, dass Sie zumindest unter macOS (ich würde mir vorstellen, dass dies auch für jedes Unix-ähnliche Betriebssystem und möglicherweise sogar für Windows gilt) nur
$1
den Platzhalterwert verwenden können, der das Argument darstellt im Alias. So richten Sie einen Alias ein, der Folgendesgit rb 8
ergibtgit rebase -i HEAD~8
:Sie können es auch mehrmals in einem Alias verwenden. Wenn Sie beispielsweise einen Alias wünschen, in den übersetzt werden
git f my-branch
sollgit fetch origin my-branch:my-branch
, können Sie Folgendes tun:quelle
Ich habe diese Funktion "grb" geschrieben, um eine interaktive Git-Rebase auf einem Mac durchzuführen. Daher kann ich sagen, dass ich
grb 5
meine letzten 5 Commits anzeigen möchte :Die Top-Antwort auf dieser Seite funktioniert bei mir nicht. So zeigen Sie meine
.bash_profile
und alle anderen Git-Aliase an, die ich auf meinem Mac verwende:https://github.com/rayning0/bash_profile/blob/master/.bash_profile#L146
quelle