Ich habe ein privates Repo auf einem Server und muss es regelmäßig neu starten / erzwingen, was es erforderlich macht, den lokalen Zweig auf meinem anderen Computer häufig zurückzusetzen. Ich habe daher den folgenden Alias "catchup" erstellt, der dies für den aktuellen Zweig ermöglicht. Im Gegensatz zur anderen Antwort enthält dieser Alias keinen fest codierten Zweignamen.
Festhalten.
[alias]
catchup = "!f(){ echo -n \"reset \\033[0;33m$(git symbolic-ref -q --short HEAD)\\033[0m to \\033[0;33m$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD))\\033[0m? (Y/n) \"; read -r ans; if [ \"$ans\" = \"y\" -o \"$ans\" = \"Y\" -o -z \"$ans\" ]; then git reset --hard $(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)); else echo \"catchup aborted\"; fi }; f"
Richtig formatiert (funktioniert nicht mit den Zeilenumbrüchen in .gitconfig) sieht es folgendermaßen aus:
"
!f(){
echo -n \"reset \\033[0;33m$(git symbolic-ref -q --short HEAD)\\033[0m to \\033[0;33m$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD))\\033[0m? (Y/n) \";
read -r ans;
if [ \"$ans\" = \"y\" -o \"$ans\" = \"Y\" -o -z \"$ans\" ]; then
git reset --hard $(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD));
else
echo \"catchup aborted\";
fi
}; f
"
- Das
\\033[0;33m
und \\033[0m
dient zur Hervorhebung des aktuellen Zweigs und stromaufwärts mit Farbe.
$(git symbolic-ref -q --short HEAD)
ist der aktuelle Filialname
$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD))
ist der Upstream des aktuellen Zweigs.
Da das Zurücksetzen ein potenziell gefährlicher Aufruf ist (insbesondere mit der Option --hard verlieren Sie alle nicht festgeschriebenen Änderungen), erfahren Sie zunächst, was zu tun ist. Wenn Sie sich beispielsweise in einem Zweig dev-container mit der Fernbedienung qcpp / dev-container befinden und eingeben git catchup
, werden Sie aufgefordert:
dev-container auf qcpp / dev-container zurücksetzen? (J / n)
Wenn Sie dann y eingeben oder einfach die Eingabetaste drücken, wird der Reset durchgeführt. Wenn Sie etwas anderes eingeben, wird der Reset nicht durchgeführt.
Wenn Sie sehr sicher sein und programmgesteuert verhindern möchten, dass nicht bereitgestellte / nicht festgeschriebene Änderungen verloren gehen, können Sie den obigen Alias mit entsprechenden Überprüfungen auf Diff-Index weiter aufpeppen .
Das obligatorische Wort der Warnung: Wenn Sie an einem öffentlichen Repository arbeiten, auf dem andere Personen basieren, und Sie diesen Alias benötigen, machen Sie es falsch ™ .