it-swarm.com.de

Gibt es eine "Git Pull - Dry-Run" -Option in Git?

Gibt es so etwas wie git pull --dry-run, um zu sehen, wie Dinge zusammengeführt werden, bevor sie meinen Arbeitsbaum ruinieren?

Im Moment mache ich:

git fetch Origin && git merge --no-commit --no-ff

Ich habe in der Manpage für 'git-pull' nichts dazu gefunden.

Um dies zu verdeutlichen, muss es nur in einem Ant-Skript bereitgestellt werden, um festzustellen, ob bei der Ausführung von git pull Konflikte aufgetreten sind. Beenden Sie anschließend den Build-Vorgang, schlagen Sie die Bereitstellung fehl, und belassen Sie die Verzeichnisstruktur vor git pull.

65
Danila Ladner

Ich habe mich immer auf die inhärenten Fähigkeiten von Git verlassen, um mich zurückzubekommen, wenn eine Zusammenführung fehlschlägt.

Um abzuschätzen, wie die Zusammenführung erfolgen könnte, können Sie wie folgt beginnen:

$ git fetch Origin branch  # Fetch changes, but don't merge
$ git diff HEAD..Origin/branch # Diff your current head to the fetched commit

... personal judgement of potential merge conflicts ...

$ git merge Origin/branch # merge with the fetched commit

Wenn die Dinge nicht wie geplant liefen, schauen Sie sich Ihr reflog an und setzen Sie es in den gewünschten Zustand zurück:

$ git reflog
...
abc987  [email protected]{0}: merge activity
b58aae8 [email protected]{1}: fetch Origin/branch
8f3a362 [email protected]{2}: activity before the fetch
...
$ git reset --hard HEAD{2}
52
rynmrtn

Sie müssen zuerst holen, um Ihren lokalen Origin/Master zu aktualisieren

git fetch Origin

Dann können Sie tun:

git diff --name-only Origin/master

Listet die geänderten Dateien auf.

git diff Origin/master directory_foo/file_bar.m

Listet den zeilenweisen Vergleich der Datei directory_foo/file_bar.m auf.

28
GayleDDS

Sie können den gewünschten Effekt erzielen, indem Sie aus Ihrem aktuellen Zweig einen neuen Wegwerfzweig erstellen und den Befehl git pull Dort. Wenn Sie mit den Ergebnissen unzufrieden sind, ist der ursprüngliche Zweig intakt.

17
gcbenison
# fetch new commits from Origin
$ git fetch

# check what are the differences and judge if safe to apply
$ git diff Origin/master

# actually merge the fetched commits 
$ git pull
8
warden

Da das Ziehen das Zusammenführen impliziert, würde ich git merge --abort Ausführen, wenn Ihr Skript Konflikte feststellt und das Zusammenführen fehlschlägt.

3
kostix

Siehe meine Antwort in dieser ähnlichen Frage:

Wie kann ich eine Vorschau von git-pull anzeigen, ohne Fetch auszuführen?

das geht an die ~/.gitconfig Datei:

[alias]
        diffpull=!git fetch && git diff [email protected]{u}
0
Andy P