У меня есть две ветви. Там есть файл, присутствующий в обеих ветках. Он не изменился с тех пор, как две ветви разошлись. Когда я объединяю одну ветку с другой, git удаляет файл. Я не вижу причины для этого. Рассмотрим следующий консольный журнал, где я проверяю наличие файла в обеих ветках, затем пытаюсь выполнить слияние и показываю, что файл теперь удален. (Я отредактировал определенные детали, но порядок событий остается неизменным, и я заверяю вас, что каждый файл, перечисленный в разделе поэтапных изменений, был файлом .swift, в отличие от рассматриваемого удаленного файла.)
$ git checkout develop
Switched to branch 'develop'
Your branch is up to date with 'origin/develop'.
$ ll PROJECT.xcworkspace/xcshareddata/swiftpm/Package.resolved
-rw-r--r-- 1 USER USER 603 Apr 00 00:00 PROJECT.xcworkspace/xcshareddata/swiftpm/Package.resolved
$ git checkout feature/FEATURE
Switched to branch 'feature/FEATURE'
Your branch is up to date with 'origin/feature/FEATURE'.
$ git checkout develop
Switched to branch 'develop'
Your branch is up to date with 'origin/develop'.
$ git status
On branch develop
Your branch is up to date with 'origin/develop'.
nothing to commit, working tree clean
$ ll PROJECT.xcworkspace/xcshareddata/swiftpm/Package.resolved
-rw-r--r-- 1 USER USER 603 Apr 00 00:00 PROJECT.xcworkspace/xcshareddata/swiftpm/Package.resolved
$ git checkout feature/FEATURE
Switched to branch 'feature/FEATURE'
Your branch is up to date with 'origin/feature/FEATURE'.
$ git status
On branch feature/FEATURE
Your branch is up to date with 'origin/feature/FEATURE'.
nothing to commit, working tree clean
$ ll PROJECT.xcworkspace/xcshareddata/swiftpm/Package.resolved
-rw-r--r-- 1 USER USER 603 Apr 00 00:00 PROJECT.xcworkspace/xcshareddata/swiftpm/Package.resolved
$ git merge develop
Auto-merging PROJECT.xcodeproj/project.pbxproj
CONFLICT (content): Merge conflict in PROJECT.xcodeproj/project.pbxproj
Automatic merge failed; fix conflicts and then commit the result.
$ git status
On branch feature/FEATURE
Your branch is up to date with 'origin/feature/FEATURE'.
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Changes to be committed:
new file: PROJECT/PATH/SOME_SWIFT_FILES.swift
modified: PROJECT/PATH/SOME_OTHER_SWIFT_FILES.swift
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: PROJECT.xcodeproj/project.pbxproj
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: PROJECT.xcworkspace/xcshareddata/swiftpm/Package.resolved
$ ll PROJECT.xcworkspace/xcshareddata/swiftpm/Package.resolved
ls: PROJECT.xcworkspace/xcshareddata/swiftpm/Package.resolved: No such file or directory
$
Почему он это делает? Очень неприятно думать, что git может самопроизвольно вносить ошибочные изменения по своему усмотрению.