Хотя в вашем понимании веток с Git есть некоторая путаница, я думаю, это может быть выполнимо.
Во-первых, о ветвях: в Git они являются просто ссылкой на их последний коммит (под капотомветвь - это файл, содержащий только хеш коммита.)
Git, PVCS и SVN работают по-разному.
В Git, если вы хотите разделить файлы на ветку, это возможно (хотя и необычно).Советуем создать базовые ветви следующим образом:
Создайте свой репозиторий git:
ghislain@linux (1): /tmp/example (master) ✔
> git init .
Initialized empty Git repository in /tmp/example/.git/
Создайте свои файлы (хотя они, вероятно, уже есть):
ghislain@linux (1): /tmp/example (master #) ✔
> touch foo.c foo.h bar.c bar.h
Сделайте начальный коммит (который послужит основой для всех ваших веток):
ghislain@linux (1): /tmp/example (master #) ✔
> touch README.md
ghislain@linux (1): /tmp/example (master #) ✔
> git add README.md && git commit -m 'Initial commit'
[master (root-commit) a9a05f3] Initial commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
Создайте ветку для каждого типа файлов с соответствующими файлами:
ghislain@linux (1): /tmp/example (master) ✔
> git checkout -b files-foo master
Switched to a new branch 'files-foo'
ghislain@linux (1): /tmp/example (files-foo) ✔
> git add foo.*
ghislain@linux (1): /tmp/example (files-foo +) ✔
> git commit -m 'foo added'
[files-foo 558cdc6] foo added
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 foo.c
create mode 100644 foo.h
Сделайте несколькомодификации, обновления, работа с указанными файлами:
ghislain@linux (1): /tmp/example (files-foo) ✔
> vim foo.h
ghislain@linux (1): /tmp/example (files-foo *) ✔
> git add foo.h
ghislain@linux (1): /tmp/example (files-foo +) ✔
> git commit -m 'foo.h updated'
[files-foo 9565594] foo.h updated
1 file changed, 1 insertion(+)
Сделайте то же самое для других файлов:
ghislain@linux (1): /tmp/example (master) ✔
> git checkout -b files-bar master
Switched to a new branch 'files-bar'
ghislain@linux (1): /tmp/example (files-bar) ✔
> git add bar.*
ghislain@linux (1): /tmp/example (files-bar +) ✔
> git commit -m 'bar files added'
[files-bar 9f78382] bar files added
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 bar.c
create mode 100644 bar.h
Ваш журнал фиксации будет выглядеть следующим образом, с одной веткой на файл"type":
ghislain@linux (1): /tmp/example (files-bar) ✔
> git log --graph --oneline --all
* 9f78382 (HEAD -> files-bar) bar files added
| * 9565594 (files-foo) foo.h updated
| * 558cdc6 foo added
|/
* a9a05f3 (master) Initial commit
Если вы хотите работать с набором файлов, вам нужно будет git checkout <related-branch>
и зафиксировать его там.
Это может, однако, оказаться сложным, если выхочу несколько перекрестных ссылок или общую работу.Для последнего вам придется зафиксировать в master
и перебазировать ветки поверх него (если вы хотите сохранить свой журнал в чистоте).
В целом, это может работать, но это можетв конечном итоге очень громоздким в управлении.Я не знаю, как работает ваш проект, но может быть проще собраться вместе и использовать, возможно, более классический рабочий процесс ветвления, особенно если вы новичок в Git.