Um nur HEAD bewegen (wie gefragt - das den Index oder Arbeits Baum nicht aktualisiert), Verwendung:
git reset --soft $(git child)
Sie werden im Folgenden die Konfiguration aufgelistet verwenden müssen.
Erklärung
Basierend auf @Michael's answer, gehackt ich den child
alias in meinem .gitconfig
auf.
Es funktioniert wie erwartet im Standardfall und ist auch vielseitig.
# Get the child commit of the current commit.
# Use $1 instead of 'HEAD' if given. Use $2 instead of curent branch if given.
child = "!bash -c 'git log --format=%H --reverse --ancestry-path ${1:-HEAD}..${2:\"$(git rev-parse --abbrev-ref HEAD)\"} | head -1' -"
Voreingestellt das Kind des Kopfes, zu geben (es sei denn, eine andere Commit-isch Argument angegeben wird), indem die Vorfahren einen Schritt in Richtung auf die Spitze des Stromzweig folgenden (es sei denn, eine andere Commit-isch als zweites Argument angegeben wird) .
Verwenden Sie %h
anstelle von %H
, wenn Sie die kurze Hash-Form möchten.
Mit einem frei stehenden Kopf gibt es keinen Zweig, aber das erste Kind bekommen kann immer noch mit diesem Alias erreicht werden:
# For the current (or specified) commit-ish, get the all children, print the first child
children = "!bash -c 'c=${1:-HEAD}; set -- $(git rev-list --all --not \"$c\"^@ --children | grep $(git rev-parse \"$c\")); shift; echo $1' -"
Ändern der $1
zu $*
drucken alle Kinder
Siehe auch Skript/Befehl ['git children-of'] (http://stackoverflow.com/a/20141722/6309)! – VonC
Es gibt eine gute Lösung bei http://stackoverflow.com/questions/2263674/how-do-i-find-the-next-commit-in-git –