В ветке A есть файлы x.js и y.js. Создайте ветку B из A, чтобы у B также были x.js и y.js. Вернитесь в ветку A, удалите y.js, затем добавьте z.js и отредактируйте x.js, каждое изменение фиксируется. Наконец, как в ветке A может быть файл y.js (т. е. в A есть x.js, y.js, z.js).
Я пытался получить y от B путем слияния, но это не сработало.
Вот что я думаю:





Из вашего филиала А
# the "legacy" way
git checkout B -- y.js
# the modern way
git restore --source=B y.js
затем просто добавьте и зафиксируйте.
Иногда ;-)
Это сработало, но если я удалю много файлов, мне придется делать это несколько раз?
Вы также можете указать несколько путей после -- (разделенных пробелами) и использовать в путях подстановочные знаки, например somedir/* или *.js.
В качестве альтернативы ответу @Romain вы можете рассмотреть возможность рассмотрения коммитов, а не отдельных файлов. Особенно, если вам нужно проверить несколько файлов, а их набор изменений представляет собой один или несколько коммитов.
Если вы хотите отразить в ветке B одно или несколько изменений, внесенных в ветку A, вы можете использовать git Cherry-Pick.
# making sure to be on branch B
git checkout B
# picking commits from branch A
git cherry-pick <commit1>, ..., <commitN>
Вместо этого, если вы хотите включить весь набор изменений из другой ветки, но еще не готовы к слиянию, вы можете рассмотреть возможность перебазированияB поверх A. Это будет включать в B все коммиты в A, которых не было в B после их расхождения, перемещая базу B в головной коммит A.
# making sure to be on branch B
git checkout B
# rebase B on top of branch A
git rebase A
опереди меня! :П