Żadna z pozostałych bieżących odpowiedzi nie spowoduje "scalenia" plików, tak jak w przypadku użycia polecenia scalania. (W najlepszym wypadku będą one wymagały ręcznego wybierania różnic.) Jeśli rzeczywiście chcesz skorzystać z łączenia za pomocą informacji od wspólnego przodka, możesz postępować zgodnie z procedurą opisaną w "Advanced Merging" section podręcznika odniesienia git.
Dla tego protokołu zakładam, że chcesz scalić plik "path/to/file.txt" z origin/master w HEAD - zmodyfikuj odpowiednio. (Nie musisz być w głównym katalogu repozytorium, ale pomaga.)
# Find the merge base SHA1 (the common ancestor) for the two commits:
git merge-base HEAD origin/master
# Get the contents of the files at each stage
git show <merge-base SHA1>:path/to/file.txt > ./file.common.txt
git show HEAD:path/to/file.txt > ./file.ours.txt
git show origin/master:path/to/file.txt > ./file.theirs.txt
# You can pre-edit any of the files (e.g. run a formatter on it), if you want.
# Merge the files
git merge-file -p ./file.ours.txt ./file.common.txt ./file.theirs.txt > ./file.merged.txt
# Resolve merge conflicts in ./file.merged.txt
# Copy the merged version to the destination
# Clean up the intermediate files
git merge-file należy użyć wszystkich swoich domyślnych ustawieniach scalania do formatowania i tym podobne.
Należy również pamiętać, że jeśli „nasze” to wersja kopii roboczej, a ty nie chcesz być nadmiernie ostrożny, można pracować bezpośrednio na pliku:
git merge-base HEAD origin/master
git show <merge-base SHA1>:path/to/file.txt > ./file.common.txt
git show origin/master:path/to/file.txt > ./file.theirs.txt
git merge-file path/to/file.txt ./file.common.txt ./file.theirs.txt
Możliwy duplikat [? Jak scalić selektywnych pliki z git-scalić] (http://stackoverflow.com/questions/449541/how-do-you-merge-selective-files-with- git-merge) –
Możliwy duplikat [Jak scalić zmiany w jednym pliku, a raczej n łączenia commits?] (https://stackoverflow.com/questions/10784523/how-do-i-merge-changes-to-a-single-file-rather-than-merging-commits) – fbmd