Git ветка фильтровать выбранные файлы - PullRequest
2 голосов
/ 19 июня 2020

У меня есть несколько коммитов ветки, и я хочу создать в другой ветке, но только для определенных файлов.

Давайте

git checkout mybranch

переключение с master От до mybranch и уже существуют некоторые коммиты, которые применяют изменения к разным файлам.

Теперь я хочу создать ветку, в которой я вижу похожие коммиты, но на этот раз только с изменениями для файлов Я выбрал. Как я мог это сделать?

Моя идея заключалась бы в том, чтобы брать каждую фиксацию и создавать вторую фиксацию для каждой, где появляются изменения выбранных файлов. Но это может привести к большому количеству ручной работы в зависимости от того, сколько у вас коммитов. Также я сомневаюсь, что их можно будет легко объединить позже.

Как лучше всего объединить только изменения выбранных файлов? Возможно ли такое?

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Вы можете использовать git filter-branch, чтобы переписать часть вашей ветки.

В вашем случае вы можете использовать --index-filter:

# create a copy of your branch :
git branch extracted mybranch
git checkout extracted

# all flavors of git filter-branch basically take a script to apply on each commit
git filter-branch --index-filter 'git reset HEAD && git add [the files you want]'
    master..extracted

Вы также можете изучить инструмент например git-filter-repo

1 голос
/ 19 июня 2020

Как лучше всего объединить изменения только выбранных файлов? Возможно ли такое? , когда вы объедините его обратно в мастер, будут объединены только файлы, которые вы изменили и зафиксировали.

...