当前位置: 首页 > news >正文

Linux|如何管理多个Git身份

摘要

关于如何管理不同项目和多个Git身份。

作为一名通用软件开发者,我经常发现自己在处理各种各样的项目,每个项目都有自己的要求和期望。这包括为个人、工作和客户项目管理不同的Git身份。以下是我组织Git仓库以简化这一过程的方法。

目录组织

我将我的项目分为三个层级:

  1. 个人项目:这些存放在 ~/sources 目录下。
  2. 工作项目:所有的专业项目都保存在 ~/work 目录中。
  3. 客户特定项目:这些进一步组织在 ~/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.nameuser.email 等设置的地方。然而,.gitconfig文件真正强大的功能是根据仓库的位置有条件地包含其他配置文件。

以下是我 ~/.gitconfig 文件的设置示例:

[user]name = Garrit Frankeemail = 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 Frankesigningkey = 12345678email = garrit@work.de[commit]gpgsign = true

这种方法确保了我可以在不同项目之间轻松切换身份,而无需每次都手动更新我的Git配置。

好处和简化

通过以这种方式组织我的仓库,并利用 .gitconfig 文件中有条件的包含,我大大简化了新项目的启动过程。它消除了忘记更新电子邮件地址的常见问题,这是一个至关重要的细节。

本文由 mdnice 多平台发布

相关文章:

  • 开源AI引擎:文本自动分类在公安及消防执法办案自动化中的应用
  • Serilog日志框架
  • Java- maven下载jar包,提示找不到,Could not find artifact
  • 机器学习-关联规则算法Apriori及编码实现
  • 【讲解下Gitea】
  • PyTorch 教程-快速上手指南
  • 关于 UnityEditorWindow
  • Java中常见的锁策略
  • 【Linux】详解文件系统以及周边知识
  • 10.windows ubuntu 组装软件:spades,megahit
  • 鸿蒙应用开发-录音保存并播放音频
  • Linux文件(系统)IO(含动静态库的链接操作)
  • 最新2024年增强现实(AR)营销指南(完整版)
  • 全国青少年软件编程(Python)等级考试一级考试真题2023年9月——持续更新.....
  • HTML块级元素和内联元素(头部和布局)
  • 【笔记】你不知道的JS读书笔记——Promise
  • CentOS从零开始部署Nodejs项目
  • HTML中设置input等文本框为不可操作
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • orm2 中文文档 3.1 模型属性
  • React Native移动开发实战-3-实现页面间的数据传递
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Spring-boot 启动时碰到的错误
  • Yii源码解读-服务定位器(Service Locator)
  • 力扣(LeetCode)357
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端性能优化--懒加载和预加载
  • 使用Gradle第一次构建Java程序
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 容器镜像
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ${ }的特别功能
  • (C++17) optional的使用
  • (LeetCode 49)Anagrams
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (三)终结任务
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (正则)提取页面里的img标签
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .NET 设计一套高性能的弱事件机制
  • .net/c# memcached 获取所有缓存键(keys)
  • .NET中GET与SET的用法
  • /dev/sda2 is mounted; will not make a filesystem here!
  • /etc/fstab和/etc/mtab的区别
  • @Query中countQuery的介绍
  • [ C++ ] STL---string类的使用指南
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [20150707]外部表与rowid.txt
  • [BZOJ]4817: [Sdoi2017]树点涂色