温馨提示×

CentOS C++项目如何进行版本控制配置

小樊
32
2025-12-13 15:02:14
栏目: 编程语言

CentOS C++项目的版本控制配置指南

一 环境准备与基础配置

  • 安装开发工具与版本控制工具:
    • 安装编译与调试工具:sudo yum groupinstall “Development Tools”sudo yum install gcc-c++ gdb
    • 安装 Git:sudo yum install git
  • 配置 Git 全局身份(对所有仓库生效):
    • 设置用户名与邮箱:git config --global user.name “Your Name”git config --global user.email “your.email@example.com”
    • 可选:设置默认编辑器(如 vim):git config --global core.editor vim
  • 生成 SSH 密钥用于免密访问远端仓库(如 GitLab/Gitee/GitHub):
    • 生成密钥:ssh-keygen -t rsa -C “youremail@mail.com”
    • 将公钥(默认路径 ~/.ssh/id_rsa.pub 的内容)添加到远端平台的 SSH Keys 页面。

二 本地仓库初始化与标准配置

  • 初始化仓库与首次提交:
    • 在项目根目录执行:git init
    • 添加文件:git add .
    • 提交:git commit -m “Initial commit”
  • 连接远端并推送:
    • 关联远端(HTTPS 或 SSH 任选其一):
      • HTTPS:git remote add origin https://your-domain/namespace/repo.git
      • SSH:git remote add origin git@your-domain:namespace/repo.git
    • 推送:git push -u origin master(或 main,视远端默认分支而定)
  • 使用 .gitignore 过滤不需要的文件(C++ 常用规则示例):
    • 典型规则:
      # 编译产物
      *.o
      *.obj
      *.so
      *.dll
      *.dylib
      *.a
      *.lib
      *.exe
      *.out
      
      # 预编译头
      *.gch
      *.pch
      
      # 构建目录
      [Bb]in/
      [Oo]bj/
      Debug/
      Release/
      x64/
      x86/
      build/
      CMakeFiles/
      CMakeCache.txt
      cmake_install.cmake
      Makefile
      CTestTestfile.cmake
      
      # 日志与临时
      *.log
      *.tlog
      *.idb
      *.ilk
      *.tmp
      *.lastbuildstate
      
      # IDE/编辑器
      .vs/
      *.suo
      *.user
      *.sdf
      *.ipch
      *.VC.db
      .idea/
      *.swp
      *.swo
      Thumbs.db
      Desktop.ini
      
    • 规则要点:以 # 开头为注释;以 / 结尾仅匹配目录;! 表示取反例外;/ 开头仅匹配仓库根目录;**** 转义;**双星号 ** 匹配多级目录。
  • 若已误提交需忽略的文件,先将其从索引移除再提交:
    • 移除缓存:git rm -r --cached 路径/到/文件或目录
    • 重新添加并提交:git add . && git commit -m “Remove ignored files from index” && git push

三 自建 Git 服务器与权限管理

  • 基于 SSH 的最小可用方案(适合小团队):
    • 创建专用用户:adduser gitpasswd git
    • 配置 authorized_keys:
      • 切换到 git 用户:su git
      • 创建目录与文件:mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys
      • 设置权限:chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
      • 将客户端公钥追加到 authorized_keys(一行一个公钥)
    • 创建裸仓库(无工作区):git init --bare /home/git/project.git
    • 客户端克隆与推送:git clone git@your-server:project.git
    • 安全加固(可选):将 git 用户的登录 shell 改为 git-shell,仅允许 Git 操作:
      • 创建目录:mkdir /home/git/git-shell-commands
      • 修改 /etc/passwd:将 git 行改为 git:x:1000:1000::/home/git:/bin/git-shell
  • 团队权限自动化(中大型团队推荐 gitolite):
    • 安装与初始化(以 git 用户执行):
      • 安装依赖:yum install ‘perl(Data::Dumper)’
      • 克隆并安装:git clone https://github.com/sitaramc/gitolite && mkdir -p ~/bin && ./gitolite/install -to ~/bin
      • 导入管理员公钥并初始化:~/bin/gitolite setup -pk ~/YourName.pub
    • 通过管理仓库 gitolite-admin 配置仓库与用户权限(RW/RW+、分支策略等),推送后自动生效。

四 与构建系统及 IDE 的协同

  • 使用 CMake 时的推荐做法:
    • 在仓库根目录维护 CMakeLists.txt,构建输出统一放入 build/ 目录(out-of-source),避免污染源码树;该目录天然被 .gitignore 忽略。
    • 若需要编辑器/静态分析/调试的编译数据库,可生成 compile_commands.jsonxmake project -k compile_commands(如使用 xmake),或 CMake 的 CMAKE_EXPORT_COMPILE_COMMANDS=ON 后软链/复制到 .vscode/compile_commands.json,便于 VS Code 等工具使用。
  • 多平台换行符与属性管理:
    • 在仓库根目录添加 .gitattributes,统一文本换行与可执行脚本类型:
      # 统一文本为 LF,Windows 自动转 CRLF
      * text=auto eol=lf
      
      # 明确工程/脚本类型
      *.sln text eol=lf
      *.vcxproj text eol=lf
      *.vcxproj.filters text eol=lf
      *.sh text eol=lf
      *.bat text eol=crlf
      
      # 明确二进制文件
      *.png binary
      *.jpg binary
      *.jpeg binary
      *.gif binary
      *.ico binary
      *.pdf binary
      *.zip binary
      *.exe binary
      *.dll binary
      *.so binary
      *.lib binary
      *.pdb binary
      
    • 若历史文件换行混乱,可一次性归一化:git add --renormalize .

0