Diğer geçerli yanıtların hiçbiri sanki birleştirme komutunu kullanıyormuşsunuz gibi dosyaları "birleştirmez". (En iyi ihtimalle onlar elle diffs seçmenizi gerek duyarız.) Aslında ortak bir atadan gelen bilgiler kullanılarak birleştirilmesi yararlanmak istiyorsanız, bulunan birine dayanarak bir prosedür takip edebilirsiniz "Gelişmiş birleştirme" bölümünde GYTE Başvuru Kılavuzu.
Bu protokol için, 'path / to / file.txt' dosyasını origin / master'dan HEAD'e birleştirmek istediğinizi varsayıyorum - uygun şekilde değiştirin. (Deponuzun üst dizininde olmanız gerekmez, ancak yardımcı olur.)
# 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 , biçimlendirme ve benzerleri için tüm varsayılan birleştirme ayarlarınızı kullanmalıdır.
Ayrıca, "bizimkinin" çalışan kopya sürümü ise ve aşırı derecede dikkatli olmak istemiyorsanız, doğrudan dosya üzerinde çalışabileceğinizi unutmayın:
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