Вы должны не удалять файлы из проекта в новой ветке ... но в любом случае, давайте предположим, что это необходимо по любой причине.Если я собираюсь в конечном итоге объединить ветку на master, то я, вероятно, сделаю небольшую хитрость, чтобы избежать появления этой проблемы ... но это требует немного дополнительной работы.Я бы удалил файлы при первом коммите новой ветки и больше ничего не сделал бы с этой ревизией.Затем, когда я хочу слить обратно с master, я бы не просто слился, но я бы выбрал (или перебазировал) вишню, отбрасывая коммит, в котором я удалил файлы, и затем я бы слил ветку rebased / cherry-pick.
Давайте предположим, что я создаю ветку feature1 из master и делаю там 3 ревизии ... что-то вроде:
git checkout -b feature1 master
git rm index.html blahblah.html # delete the files I don't want to keep on the branch
git commit -m "Removing the files I don't want"
# work
git commit -m "First real revision of feature 1"
# more work
git commit -m "Second revision of feature 1"
На данный момент я готов слиться с master ... затем яне просто объединить функцию 1, потому что это приведет к удалению файлов, потому что я сделал это с первой ревизией feature1, верно? ... Я бы отбросил первую ревизию, а затем слился с master, и это можно сделать относительно легко.
git checkout --detach master # go back to master
git cherry-pick feature1~2..feature1 # only cherry-pick the last 2 revisions
git checkout master # go back to master again
git merge --no-ff HEAD@{1} -m "Merging feature 1" # merge rebased branch
Это должно сделать.Но я не думаю, что вы все равно должны удалять файлы.