Gibt es eine Möglichkeit, diese drei Befehle in einem zu verwenden?
git add .
git commit -a -m "commit" (do not need commit message either)
git push
Manchmal ändere ich nur einen Buchstaben, CSS-Padding oder so. Trotzdem muss ich alle drei Befehle schreiben, um die Änderungen zu übernehmen. Es gibt viele Projekte, bei denen ich nur ein Drücker bin, also wäre dieser Befehl fantastisch!
Antworten:
Aufbauend auf @ Gavins Antwort:
Wenn Sie Lazygit zu einer Funktion anstelle eines Alias machen, können Sie ihm ein Argument übergeben. Ich habe meinem .bashrc (oder .bash_profile wenn Mac) Folgendes hinzugefügt:
Auf diese Weise können Sie eine Festschreibungsnachricht bereitstellen, z
Sie könnten dies natürlich noch weiter verbessern, indem Sie noch mehr Argumente akzeptieren, z. B. an welchen entfernten Ort oder an welchen Zweig.
quelle
$*
anstatt$1
die Eingabe der Anführungszeichen zu speichern:lazygit My commit msg
function dirtygit() { git add . git commit -a -m "$*" git push }
Am Ende habe ich meiner
.gitconfig
Datei einen Alias hinzugefügt :Verwendung:
git cmp "Long commit message goes here"
Fügt alle Dateien hinzu, verwendet dann den Kommentar für die Festschreibungsnachricht und verschiebt ihn auf den Ursprung.
Ich denke, es ist eine bessere Lösung, weil Sie die Kontrolle über die Commit-Nachricht haben.
Der Alias kann auch über die Befehlszeile definiert werden. Dies fügt ihn Ihrem hinzu
.gitconfig
:quelle
!f() { ... }; f
genau? Mehr Erklärung dieser Zeile würde die Antwort noch besser machen.f
und ruft sie dann auf.git pull
zum Start hinzugefügt , damit Zusammenführungen reduziert werden.Obwohl ich Wayne Werner in seinen Zweifeln zustimme, ist dies technisch eine Option:
Welches definiert einen Alias, der ausgeführt wird
commit
undpush
. Verwenden Sie es alsgit acp
. Bitte beachten Sie, dass solche "Shell" -Aliasnamen immer im Stammverzeichnis Ihres Git-Repositorys ausgeführt werden.Eine andere Option könnte darin bestehen, einen Post-Commit-Hook zu schreiben, der den Push ausführt.
Übrigens können Sie tatsächlich Argumente an Shell-Aliase übergeben. Wenn Sie eine benutzerdefinierte Festschreibungsnachricht übergeben möchten, verwenden Sie stattdessen:
(Natürlich, jetzt, müssen Sie eine Nachricht verpflichten geben:
git acp "My message goes here!"
)quelle
git
fügte automatisch die Escapezeichen hinzu (markiert mitgit config -e
).Ich denke, Sie könnten den Workflow, für den git entwickelt wurde, falsch verstehen. (Um zu verdeutlichen / zu korrigieren, was ich in dem Kommentar gemeint habe, benötigen Sie das nicht
git add .
, da escommit -a
normalerweise dem gleichen Zweck dient - Hinzufügen von Änderungen, die noch nicht bereitgestellt wurden, wenn die Dateien bereits hinzugefügt wurden)Normalerweise machen Sie so etwas:
Waschen, Spülen, Wiederholen, bis Sie Feature X beendet haben oder an einem Haltepunkt sind oder nur andere Personen sehen sollen, was Sie getan haben. Dann tust du es
Git ist kein SVN - aber es scheint, dass Sie versuchen, es als solches zu verwenden. Möglicherweise finden Sie einige der Ressourcen am Ende des Artikels hier von Nutzen.
quelle
git add .
undgit commit -a
sind nicht dasselbeIch benutze dies in meinem .bash_profile
Es wird wie ausgeführt
Vergessen Sie nicht,
source ~/.bash_profile
nach dem Speichern des Alias auszuführen .quelle
Sie können das Bash-Skript verwenden und einen Alias festlegen, um einen Befehl oder eine Gruppe von Befehlen zu starten
quelle
In Bash als Alias festlegen:
Nennen:
(Um diesen Alias dauerhaft zu machen, müssen Sie ihn in Ihr .bashrc- oder .bash_profile aufnehmen.)
quelle
Die einfachste Lösung wäre:
git add
ist bereits in -a Parameter von commit enthalten, aber wenn Sie möchten, können Sie alle verbinden:quelle
Unter Linux / Mac sollte diese sehr praktische Option auch funktionieren
Wenn Sie an einem neuen Zweig arbeiten, der lokal erstellt wurde, ändern Sie die
git push
Stück mitgit push -u origin branch_name
Wenn Sie Ihre Commit-Nachricht im Systemeditor bearbeiten möchten, dann
öffnet den Editor und sobald Sie die Nachricht gespeichert haben, wird sie auch gepusht.
quelle
Sie können versuchen, gitu .
Zum ersten Mal (Knoten js muss installiert sein):
Nachdem:
Diese drei Befehle gleichzeitig ausgeben.
Das Gute ist, dass Sie sich keine Sorgen machen müssen, wenn Sie Ihr System neu installieren oder wenn Sie dies auf verschiedenen Computern tun möchten und keine Dateimodifikation erforderlich ist. Dies funktioniert auch auf verschiedenen Plattformen (nicht nur Linux und Mac, sondern auch Windows unter Eingabeaufforderung wie
cmd
undpowershell
), nur dass Sie installieren müssennpm
undnodejs
(git
natürlich).quelle
Wenn die Datei bereits verfolgt wird, müssen Sie sie nicht ausführen
git add
, sondern können einfach schreibengit commit -am 'your message'
Wenn Sie keine Commit-Nachricht schreiben möchten, können Sie Folgendes tun
git commit --allow-empty-message -am ''
quelle
Dieses Ergebnis - Versuchen Sie Folgendes: Einfaches Skript, ein Befehl für git add, git commit und git push
Öffnen Sie Ihr CMD unter Windows und fügen Sie diese Antwort ein
git commit -m "your message" . && git push origin master
quelle
Wie in dieser Antwort erwähnt, können Sie einen Git-Alias erstellen und ihm eine Reihe von Befehlen zuweisen. In diesem Fall wäre es:
und benutze es mit
quelle
Schreiben Sie ein kleines Skript namens gitpush.sh mit den folgenden Zeilen und fügen Sie es Ihrem ~ Verzeichnis hinzu.
Fügen Sie nun einen Alias in ~ / .bashrc wie folgt hinzu:
Schreiben Sie jetzt aus jedem Git-Repository einfach die "Nachricht" von gitpush.
quelle
Ich benutze eine Batch-Datei:
quelle
Es gibt einige Probleme mit den obigen Skripten:
shift "entfernt" den Parameter $ 1, andernfalls liest "push" ihn und "missversteht ihn".
Mein Tipp:
quelle
Wenn Sie ein svn-ähnliches Verhalten von git commit wünschen, verwenden Sie dieses in Ihren git-Aliasnamen in Ihrer .gitconfig
commit = "!f() { git commit \"$@\" && git push; };f"
quelle
Wenn Sie Fischschalen verwenden (basierend auf der Antwort von btse):
Speichern Sie diese Datei in '~ / .config / fish / functions' als 'quickgit.fish'. Erstellen Sie das Verzeichnis, falls es nicht vorhanden ist. '--git-dir = $ PWD / .git' Stellt sicher, dass wir die git-Befehle für das git-Projekt ausführen, in dem wir die Funktion aufgerufen haben
Starten Sie das Terminal neu, navigieren Sie zum Projekt, nehmen Sie Änderungen vor, und jetzt können Sie 'quickgit "Beispielnachricht" aufrufen. Änderungen werden jetzt hinzugefügt, festgeschrieben und gepusht :).
Auch als Gist finden Sie hier: https://gist.github.com/Abushawish/3440a6087c212bd67ce1e93f8d283a69
quelle
Es gibt bereits viele gute Lösungen, aber hier ist eine Lösung, die ich für die Art und Weise, wie ich arbeiten möchte, eleganter finde:
Ich habe ein Skript in meinen Pfad eingefügt, das "git-put" heißt und Folgendes enthält:
Das erlaubt mir zu rennen:
..um alle Dateien hinzuzufügen, festzuschreiben und zu pushen.
(Ich habe auch das "-u" hinzugefügt, weil ich dies sowieso gerne mache, obwohl es nicht mit diesem Problem zusammenhängt. Es stellt sicher, dass der Upstream-Zweig immer zum Ziehen eingerichtet ist.)
Ich mag diesen Ansatz, weil er auch die Verwendung von "git put" ermöglicht, ohne alle Dateien hinzuzufügen (überspringen Sie "-a"), oder mit anderen Optionen, die ich möglicherweise zum Festschreiben übergeben möchte. Außerdem ist "put" ein kurzes Portmanteau aus "push" und "commit".
quelle
Wenn Sie VSCode verwenden, können Sie diese Erweiterung herunterladen , mit der Sie dies in einer einfachen Tastenkombination tun können.
quelle
Wenn Sie einen Mac verwenden:
Starten Sie den Terminaltyp "cd ~ /", um zu Ihrem Home-Ordner zu gelangen
Geben Sie "touch .bash_profile" ein, um Ihre neue Datei zu erstellen.
Bearbeiten Sie .bash_profile mit Ihrem bevorzugten Editor (oder geben Sie einfach "open -e .bash_profile" ein, um es in TextEdit zu öffnen).
Kopieren Sie das Folgende und fügen Sie es in die Datei ein:
Starten Sie danach Ihr Terminal neu und fügen Sie einfach einen einfachen Befehl hinzu, schreiben Sie ihn fest und drücken Sie ihn. Beispiel:
quelle
Für MAC VSC-Benutzer ist das beste Setup:
1) Drücken Sie 'Shift + cmd + P' und geben Sie Folgendes ein:
Drücken Sie die EINGABETASTE (dadurch wird der Codebefehl installiert, um einfach zum bash_profile zu gelangen.)
2) Sie können jetzt ausführen:
code ~/.bash_profile
um das leere bash_profile zu öffnen3) Geben Sie dort eine neue Funktion ein:
4) Starten Sie jetzt VSC neu
5) Nehmen Sie eine Änderung vor, speichern Sie sie und geben Sie ein, um
lazygit message
die drei Befehle gleichzeitig auszuführenquelle
Für die MacOS-Benutzer:
Öffnen Sie Ihr Terminal oder iTerm2 oder ein anderes Terminal, das Sie verwenden.
Wechseln Sie mit dem Befehl in Ihren Benutzerprofilordner
~/
. Es ist ein Standardordner für.bash_profile
Dateien:Typ
nano .bash_profile
Dieser Befehl öffnet das.bash_profile
Dokument (oder erstellt es, falls es noch nicht vorhanden ist) im einfachsten Texteditor für Terminal -nano
.Jetzt können Sie die Datei einfach ändern. Fügen Sie diese Codezeilen ein, um Ihre Terminal-Eingabeaufforderung zu ändern:
Speichern Sie nun Ihre Änderungen, indem Sie eingeben
ctrl + o
und zum Speichern die Eingabetaste drücken. Beenden Sie dannnano
durch Eingabectrl + x
.Jetzt müssen wir Ihre Änderungen aktivieren. Geben Sie
source .bash_profile
(oder. ~/.bash_profile
) ein und beobachten Sie, wie sich Ihre Eingabeaufforderung ändert.In iTerm2
Preferences/Profiles/General/Command
aufLogin Shell
undSend text at start
auf setzensource ~/.bash_profile
. Sie müssen es also nicht nach jedem Neustart von macOS manuell erstellen.Anmeldeinformationen: https://natelandau.com/my-mac-osx-bash_profile
quelle
Ich habe dieses .sh-Skript für den Befehl ausgeführt
quelle
Da die Frage nicht angibt, welche Shell verwendet wird, ist hier die Eshell-Version, die auf den früheren Antworten basiert. Dies geht in die eshell-Alias-Datei, die sich möglicherweise in ~ / .emacs.d / eshell / alias befindet. Ich habe den ersten Teil z https://github.com/rupa/z/ hinzugefügt , mit dem Sie schnell in ein Verzeichnis cd , damit dies unabhängig von Ihrem aktuellen Verzeichnis ausgeführt werden kann.
quelle
Add-In
~/.bash_profile
zum Hinzufügen, Festschreiben und Drücken mit einem Befehl:Verwendung:
Es sind keine Anführungszeichen erforderlich, obwohl Sie in Ihren Festschreibungsnachrichten keine Semikolons oder Klammern verwenden können (einfache Anführungszeichen sind zulässig). Wenn Sie eines dieser Elemente möchten, setzen Sie einfach doppelte Anführungszeichen in Ihre Nachricht, z.
So erstellen Sie einen Kommentar in Ihrer Nachricht:
Es gibt auch eine Funktion zum Hinzufügen und Festschreiben auf ähnliche Weise:
g
Funktioniert genauso wie diese Funktion und unterliegt denselben Einschränkungen. Einfachc
stattdessen setzen . Z.BSie können auch einen Alias für das Pushing auf die Fernbedienung hinzufügen:
Verwendung:
Dass Beträge in 2 Buchstaben,
c
undp
Sie verwenden , während mit Ihrem Git Repository arbeiten. Oder Sie könneng
stattdessen alles mit nur einem Buchstaben ausführen.Vollständige Liste der Aliase und Funktionen: https://gist.github.com/matt360/0c5765d6f0579a5aa74641bc47ae50ac
quelle
Aufbauend auf der
lazygit
Antwort fügt die folgende Lösung eine Benutzerprüfung hinzu, um die Änderungen vor dem Push zu überprüfen. Die Befehle werden zurückgesetzt, wenn sie abgebrochen werden. Und das alles passiert nur dann, wenn sich das lokale Repo ändert.quelle
Dies ist perfekt für die Befehlsgruppierung.
Gruppierungsbefehle
quelle
Ich möchte Folgendes ausführen:
quelle
;
sollte&&
in Ihrem Befehl durch ersetzt werden, da der späteregit push
Befehl nur ausgeführt wird, wenn bei den vorherigen Befehlen kein Fehler vorliegt.Ich fand diesen
yolo
Alias erstaunlich, sogar einen zufälligen Kommentar zum Commit einzureichen, während ich faul bin. Es funktioniert sofort sehr gut, also mache ich es einfachgit yolo
und alle meine Änderungen werden automatisch übertragen.quelle