Мне интересно, почему git не позволяет выбирать фиксацию, которая вносит изменения в файл, который не существует. Насколько я понимаю, фиксация представляет собой полный снимок рабочего каталога. Таким образом, выбор вишневого коммита, содержащего файл, которого в настоящее время не существует, должен просто создать этот файл, но я вижу, что это не так.
Ниже приведены несколько команд для воспроизведения ситуации, о которой я говорю.
$ git init
Initialized empty Git repository in /home/mzakrze/workspace/tmp/.git/
$ echo "Hello world!" > first_file; git add first_file; git commit -m "Init commit"
[master (root-commit) 7f9478a] Init commit
1 file changed, 1 insertion(+)
create mode 100644 first_file
$ echo "Fox jumps over the layz dog" > test; git add test; git commit -m "Commit with a typo"
[master 776387b] Commit with a typo
1 file changed, 1 insertion(+)
create mode 100644 test
$ echo "Fox jumps over the lazy dog" > test; git add test; git commit -m "Fix typo"
[master 9ea19df] Fix typo
1 file changed, 1 insertion(+), 1 deletion(-)
$ git log
commit 9ea19dfe2597b28eb576e2682e745de3da74733f
Author: mzakrze <[email protected]>
Date: Sun Apr 11 17:01:13 2021 +0200
Fix typo
commit 776387b563edba9df2a12c5d1a2fd5bffb10c643
Author: mzakrze <[email protected]>
Date: Sun Apr 11 17:00:53 2021 +0200
Commit with a typo
commit 7f9478a83e3938bf57552c1b90ddc7322b1bf315
Author: mzakrze <[email protected]>
Date: Sun Apr 11 16:59:04 2021 +0200
Init commit
$ git reset --hard 7f9478a83e3938bf57552c1b90ddc7322b1bf315
HEAD is now at 7f9478a Init commit
$ git cherry-pick 9ea19 # cherry-pick "Fix typo"
error: could not apply 9ea19df... Fix typo
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
INB4: я не ищу решения, я просто хочу понять, почему git считает, что это конфликт.