git使用

git使用
pcfx目录
1. Git简介
1.1 什么是Git
是用来进行版本管理的工具
1.2 Git的作用
可以将仓库的文件拉取到本地,也可以提交到仓库
进行版本管理,进行代码审查,防止事故发生
事故发生后,及时回滚,确定责任
1.3 相关术语
- 工作区:本地修改文件的目录。
- 暂存区:通过
git add
暂存的文件区域。 - 仓库:通过
git commit
提交的代码版本库。
2. 安装与配置
2.1 安装步骤
Ubuntu : apt install git
windows : 下载对应的安装包
macOS :
- 使用 Homebrew:
brew install git
- 或下载官方安装包 Git for macOS
验证安装
1 | git --version |
2.2 基本配置
1 | git config --global user.name "用户名" |
–global :对当前用户的仓库生效
–system:对系统下的所有用户生效
–local\无参数 :只对当前仓库有效
级别由高到低,低级别会覆盖高级别的配置
3. 基本命令
3.1 仓库初始化
在创建一个文件夹为项目目录后(mkdir)
cd到当前文件夹
git init 默认在当前目录初始化,或 git init <目录名> 创建新目录并初始化。
这样初始化就完成了
1 | git clone <git_url> |
克隆项目
后面可以接 -b
也可以 指定目录
添加origin
1 | git remote add origin_ssh git@github.com:your-username/example-repo.git |
查看
1 | git remote -v |
同一个origin可以设置不同的push和fetch
1 >git remote set-url --add --push origin "地址"
配置ssh
使用ed25519生成密钥
1 | ssh-keygen -t ed25519 -C "example@email.com" |
得到密钥后,将公钥(pub)存于SSH keys
3.2 添加与提交
添加
把工作区文件添加到暂存区
1 | git add 文件/目录 |
提交
将暂存区的修改提交到本地仓库
1 | git commit -m "这次修改了xxx" |
提交到origin仓库
1 | git push origin main |
3.3 查看状态与历史、
查看状态
1 | git status # 查看工作区和暂存区状态 |
查看提交历史
1 | git log # 完整提交历史 |
查看差异
1 | git diff # 工作区与暂存区的差异 |
撤销与溯源
1 | git restore <文件路径> # 撤销工作区未暂存的修改 |
追踪代码修改
1 | git blame <文件路径> # 查看文件每行的修改者和提交ID |
3.4 其他命令
查看工作区状态
1 | git status |
查看提交历史
1 | git log |
查看某一个id提交的详细信息
1 | git show 10b8277(提交的id) |
垃圾回收,减少体积
1 | git gc |
撤销更改,溯源
1 | git reflog |
拉取完整的仓库
1 | git clone https://github.com/PCFXPCFX/note.git |
拉取代码,不merge
1 | git fetch https://github.com/PCFXPCFX/note.git |
拉取并合并
1 | git pull origin main |
4. 分支管理
分支管理基本思路
集中式工作流
依托主干 master 开发
1.获取master
可使用clone
2.在master上进行修改
3.拉取最新的代码和本地进行合并(rebase),解决冲突
4.提交代码到master (push)
代表平台 Gerrit 如aosp开发
分支式工作流
定义不同的分支进行开发
可能有
master(主干)
develop(开发)
feature(特性)
release(发布)
hotfix (热修复)
可能的开发流程
1.由owner 创建创库
=> 其他用户通过Fork 创建仓库进行开发
或=>分配权限在同一仓库进行开发
4.1 分支基本操作
创建分支
1 | git branch feature-login |
创建并切换分支
git checkout -b feature-login
删除本地分支(已合并)
git branch -d feature-login
强制删除未合并分支
git branch -D feature-login
删除远程分支
git push origin –delete feature-login
查看所有分支
git branch -a
4.2 合并与冲突
合并分支 → 发现冲突 → 打开冲突文件 → 手动编辑 → 删除冲突标记 → git add → git commit
1. 合并分支(触发冲突)
git checkout main
git merge feature-login
####2. 手动编辑冲突文件(如 login.py)
文件内容示例:
1 | <<<<<<< HEAD |
冲突标记的含义:
1 | <<<<<<< HEAD:当前分支的修改。 |
3. 解决冲突后标记为已解决
1 | git add login.py |
4. 提交合并结果
1 | git commit -m "Merge feature-login and resolve conflicts" |
5. 远程仓库
5.1 克隆与推送
推送本地分支并关联远程分支(首次推送)
1 | git push -u origin feature-login |
拉取远程分支到本地
1 | git checkout -b feature-login origin/feature-login |
强制推送(谨慎使用)
会覆盖远程历史,仅在必要时使用!
1 | git push --force origin main |
5.2 远程分支操作
同步远程分支状态
1 | git fetch origin |
删除本地缓存的已失效远程分支
1 | git remote prune origin |
6. 常用技巧
6.1 重写历史
修改最后一次提交
1 | git commit --amend -m "修正提交信息" |
交互式变基(合并最近3次提交)
1 | git rebase -i HEAD~3 |
编辑界面中将后两次提交标记为 squash
交互式变基 可以通过 squash
将多个提交合并为一个提交,使提交历史更清晰。
pick 1a2b3c4 提交1
squash 5d6e7f8 提交2
squash 9a0b1c2 提交3
6.2 标签使用
创建轻量标签
1 | git tag v1.0.0 |
创建附注标签
1 | git tag -a v1.0.0 -m "正式发布版本 1.0.0" |
推送标签到远程
1 | git push origin v1.0.0 |
推送所有标签
1 | git push origin --tags |
7. 资源推荐
遗忘速查
官方文档
可视化工具
进阶学习