摘要
关于如何管理不同项目和多个Git身份。
作为一名通用软件开发者,我经常发现自己在处理各种各样的项目,每个项目都有自己的要求和期望。这包括为个人、工作和客户项目管理不同的Git身份。以下是我组织Git仓库以简化这一过程的方法。
目录组织
我将我的项目分为三个层级:
- 个人项目:这些存放在
~/sources
目录下。 - 工作项目:所有的专业项目都保存在
~/work
目录中。 - 客户特定项目:这些进一步组织在
~/work
下的各自客户目录中,例如~/work/client1
或~/work/client2
。
例如,client1的结构可能如下所示:
/Users/garrit/work
├── client1
│ ├── foo-api
│ ├── foo-ios
│ └── foo-android
└── client2
├── bar-ios
└── bar-middleware
.gitconfig 包含
Git的全局配置文件 ~/.gitconfig
是通常存储 user.name
和 user.email
等设置的地方。然而,.gitconfig文件真正强大的功能是根据仓库的位置有条件地包含其他配置文件。
以下是我 ~/.gitconfig
文件的设置示例:
[user]
name = Garrit Franke
email = garrit@slashdev.space
[includeIf "gitdir:~/work/"]
path = ~/.gitconfig-work
[includeIf "gitdir:~/work/client2/"]
path = ~/.gitconfig-client2
[includeIf "gitdir:~/sources/"]
path = ~/.gitconfig-personal
# ...
默认设置反映了我的个人身份。然而,对于每个工作或客户特定的身份,我维护一个单独的 gitconfig
文件,当在相应的目录中工作时,它会在主要的 ~/.gitconfig
中被包含。
例如,我的 ~/.gitconfig-work
可能是这样的:
[user]
name = Garrit Franke
signingkey = 12345678
email = garrit@work.de
[commit]
gpgsign = true
这种方法确保了我可以在不同项目之间轻松切换身份,而无需每次都手动更新我的Git配置。
好处和简化
通过以这种方式组织我的仓库,并利用 .gitconfig 文件中有条件的包含,我大大简化了新项目的启动过程。它消除了忘记更新电子邮件地址的常见问题,这是一个至关重要的细节。