Stellen wir uns vor, wir haben eine masterNiederlassung.
Dann erstellen wir eine newbranch
git checkout -b newbranch
und machen Sie zwei neue Commits für newbranch: commit1 und commit2
Dann wechseln wir zu Master und machen cherry-pick
git checkout master
git cherry-pick hash_of_commit1
Wenn gitkwir uns das ansehen, sehen wir, dass commit1 und seine von Kirschen ausgewählte Version unterschiedliche Hashes haben. Technisch gesehen handelt es sich also um zwei verschiedene Commits.
Schließlich verschmelzen wir newbranchzu master:
git merge newbranch
und sehen Sie, dass diese beiden Commits mit unterschiedlichen Hashes ohne Probleme zusammengeführt wurden, obwohl sie implizieren, dass dieselben Änderungen zweimal angewendet werden sollten, sodass einer von ihnen fehlschlagen sollte.
Führt git beim Zusammenführen wirklich eine intelligente Analyse des Inhalts von Commits durch und entscheidet, dass Änderungen nicht zweimal angewendet werden sollten, oder werden diese Commits intern als miteinander verknüpft markiert?