Git指南

Git简介

  • Git 是分布式版本控制工具,核心价值在于高效管理代码变更、支持离线协作与灵活分支策略
  • 对比集中式系统(如 SVN),安全性更高(本地即备份)且协作更灵活
  • 下载与安装

img

GitHub绑定

SSH密钥

  • 输入ssh查看本机是否安装SSH

  • 输入ssh-keygen -t rsa -C "任意备注"生成RSA算法公钥和私钥并一直回车直至成功打印公钥指纹

    • -C "任意备注"便于在GitHub中更容易区分不同的SSH Key,也可省略
image-20251202113819435

SSH绑定

  • 输入cat ~/.ssh/id_rsa.pub打印并复制公钥
  • 登录 GitHub → Settings → SSH and GPG Keys → New SSH Key
  • 输入ssh -T git@github.com,若打印信息You've successfully authenticated则绑定成功
image-20251202114550549

SSH地址

  • 进入GitHub仓库复制HTTPS协议或SSH协议的下载链接
image-20250709141636991

Git命令操作

全局设置

  • 首次提交需添加邮箱信息,后续修改也可使用以下命令

    1
    2
    git config --global user.email "your@email.com"
    git config --global user.name "your name"
  • 设置在git init新仓库时,创建一个叫main的分支

    1
    git config --global init.defaultBranch main
  • 设置默认push行为,推送当前峰值到对应远程同名分支,若分支不存在则报错

    1
    git config --global push.default simple
  • windows平台设置:在提交时,自动将CRLF换行符\r\n为转换为macOS和Linux的LF\n,保持仓库干净

    1
    git config --global core.autocrlf input
  • 查看全局设置

    1
    git config --global --list
    image-20251202142137575

远程仓库

本地提交

img

  • 在工作区路径初始化git init

  • 完成编辑后,使用git status查看那些文件有变动

    image-20251203143241648 - 若存在无需提交的文件,将其加入工作区的`.gitignore`文件
  • 添加文件索引git add .

    • 再次使用git status确认是否存在无需提交的文件
    • 若有则重置索引区git reset,并将其加入.gitignore后,重新git add .
  • 使用git commit -m "msg of update"将修改提交至Git版本库的默认分支(main/master或其他被选中的分支)

    • 此操作会更新版本库目录.git,可使用git log查看提交ID(SHA-1哈希值)和相关信息image-20251203143717501
  • 使用git show >> diff.txt可以查看具体的文件变动

  • 按照.gitignore规则从版本库中删除指定文件

    • 使用git rm -r --cached <file>删除指定文件或文件夹
    • --cached:把文件及其索引从版本库中删除,同时保留本地文件,若不加则本地文件同时删除
    • 重新创建索引git add .,提交更改git commit -m "delete some files from .git"

远程提交

  • 首次需关联远程仓库git remote add origin git@github.com:username/repo.git

    • 验证远程仓库git remote -vimage-20251203152327207
    • 后续若需更改git remote set-url origin git@github.com:username/repo.git
      • set-url后使用--fetch--push可以单独设置拉取或提交地址
  • 首次提交git push -u origin main,后续提交git push

    • -u建立本地分支和远程分支的追踪关系(upstream)
    • --force强制覆盖远程内容,适用于提交至GitHub新仓库(一般会自动创建README.md等多余文件),其余推送慎用image-20251203151415590
  • 进行远程开发时,先git pull origin main --rebase,本地开发完成后git push

    • git pull --rebase效果等同于git fetch + git rebase
    • 先拉取最新的远程提交,git rebase会把本地提交放到最新的远程提交后面
    • 若不加--rebase则相当于git fetch + git merge,这样会制造多余的merge commit,污染提交历史

工作流程

img
  • 输入git clone git@github.com:username/repo.git,可以直接获取远程仓库到本地仓库

    image-20251203155453030
  • git clone <url>中集成了多步操作

    • 本地新建远程仓库目录
    • 初始化仓库:git init
    • 添加远程地址:git remote add origin <url>
    • 获取远程数据:git fetch origin
    • 自动检出默认分支:git checkout main
  • 本地开发完成后,后续操作参考本地提交远程提交

    • 使用git clone下载的仓库,不需要再次关联远程仓库,远程提交时也不需要再次设置分支追踪(upstream)

分支管理

  • 检出默认分支:clone时所有分支均会被下载,默认分支一般被命名为main;自动设置默认分支(Branch)为当前工作主线,其他分支隐藏

  • 创建新分支并切换到该分支:git checkout -b <branchname>

  • 查看分支:git branch默认查看本地

    • 查看远程-r,查看远程和本地-a
  • 合并分支:git merge <branchname>将其他分支合并到当前分支

  • 删除本地分支:git branch <select> <branchname>

    • 删除本地-d,删除未合并分支-D
  • 删除远程分支git push origin --delete <branchname>