尽管您对 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
您的提交日志最终将如下所示,每个文件“类型”有一个分支:
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 新手。