Ich verwende eine Version eines Skripts, das auf Stephen Habermans Antwort basiert:
if [ -n "$1" ]; then
gitbin="git -C $1"
else
gitbin="git"
fi
# Fetches from all the remotes, although --all can be replaced with origin
$gitbin fetch --all
if [ $($gitbin rev-parse HEAD) != $($gitbin rev-parse @{u}) ]; then
$gitbin rebase @{u} --preserve-merges
fi
Angenommen, dieses Skript wird aufgerufen git-fetch-and-rebase
kann es mit einem optionalen Argument aufgerufen werden directory name
des lokalen Git-Repositorys, an dem die Operation durchgeführt werden soll. Wird das Skript ohne Argumente aufgerufen, geht es davon aus, dass das aktuelle Verzeichnis Teil des Git-Repositorys ist.
例
# Operates on /abc/def/my-git-repo-dir
git-fetch-and-rebase /abc/def/my-git-repo-dir
# Operates on the Git repository which the current working directory is part of
git-fetch-and-rebase
Sie ist verfügbar aquí auch.
16 Stimmen
Bitte beachten Sie: "git pull --dry-run" funktioniert nicht so, wie vermutlich erwartet. Es scheint, dass git pull unbekannte Optionen direkt an git fetch weitergibt. Das Ergebnis ist das eines normalen git pull.
34 Stimmen
"pull" ist nur ein kurzer Weg, um "fetch" und "merge" auf einmal zu machen, wenn Sie den Status der entfernten Repo überprüfen müssen, simulieren Sie wirklich ein "fetch". Also
git fetch -v --dry-run
ist das, was Sie brauchen.0 Stimmen
Ich habe die von OP vorgeschlagene Lösung ausprobiert, und es hat nichts gebracht. Wahrscheinlich nicht der beste Ansatz?