版本控制——熟悉Git
熟悉Git
熟悉Git在Linux中的使用,从用户创建到核心操作,结合示例逐步解释:
一、系统用户与Git基础配置
- 创建专用Git用户(可选)
#用户创建并设置密码
useradd -m -s /usr/bin/git-shell git
passwd git
# 验证用户权限(需密码)
su - git
# 输入密码后,用户将受限只能执行Git操作
说明:使用/usr/bin/git-shell
限制用户仅能通过Git协议操作代码库,增强安全性
- 安装Git并全局配置
# 安装Git(Debian/Ubuntu)
sudo apt update && sudo apt install git
# 配置全局信息
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
git config --global core.editor vim # 设置默认编辑器
验证配置:
git config --list
# 输出示例:
# user.name=Your Name
# user.email=you@example.com
#core.editor=vim
二、本地仓库操作
- 初始化仓库
mkdir my_project && cd my_project
git init
# 输出:
# Initialized empty Git repository in /home/user/my-project/.git/
- 文件管理流程
# 创建测试文件
echo "Hello Git" > README.md
# 查看状态
git status
#输出
#On branch master
#No commits yet
#Untracked files:
#(use "git add <file>..." to include in what will be committed)
#README.md
#nothing added to commit but untracked files present (use "git add" to track)
# 添加文件到暂存区
git add README.md #上条指令报错,将README.md加入到git仓库即可解决
# 提交修改
git commit -m "Initial commit: Create README"
# 输出:
# [master (root-commit) abc123] Initial commit: Create README
# 1 file changed, 1 insertion(+)
# create mode 100644 README.md
- 分支管理
# 查看分支
git branch
# 输出:
# * master
# 创建新分支
git branch feature/login
# 切换分支
git checkout feature/login
# 或者合并操作
git checkout -b feature/pay # 创建并切换
# 合并分支
git merge feature/login
# 解决冲突后提交
git commit -m "Merge login feature"
三、远程仓库操作
- 创建远程仓库(GitHub示例)
# 创建空仓库(Web界面操作)
# 假设仓库地址为:https://github.com/username/my-repo.git
# 关联远程仓库
git remote add origin https://github.com/username/my-repo.git
git remote -v # 查看关联
# 输出:
# origin https://github.com/username/my-repo.git (fetch)
# origin https://github.com/username/my-repo.git (push)
- 代码同步操作
# 首次推送
git push -u origin main
# 后续推送
git push
# 拉取更新
git pull origin main
# 自动合并失败时需手动解决冲突
git mergetool # 启动可视化合并工具
- git stash常用操作
#将工作区的代码暂存,临时保存未提交的修改
git stash
#将工作区的代码暂存
git pull
#将再存的代码拉回 同步到最新状态
git stash pop
##解决冲突
重点:在解决完成冲突后 一定要保证代码可以正常编译在上传
只要执行 pull 操作就需要 保证代码可以编译通过
## 将修改添加 提交 上传
git add .
git commint -m ""
git pull
======
## 在自己的分支,临时保存未提交的修改
git stash
## 切换到主分支
git checkout main
## 将主分支获取到最新状态
git pull # 正常情况下不会有冲突 因为主分支一直都是干净的
## 切换到工作分支 并将主分支合并到 工作分支
git checkout wyy
git rebase main
# 理论上不会出现冲突因为在 第一步已经将代码回去到 上一次提交的主分支状态
## 将暂存的修改 拉回
git stash pop
=====
四、git stash实战示例
#保存当前配置(包含未暂存文件)
git stash --include-untracked
#切换到其他分支处理任务
git checkout main
#完成任务后恢复修改
git checkout feature/login
git stash pop
#查看所有保存记录
git stash list
#输出示例:
#stash@{0}: On feature/login:修复登录逻辑
#stash@{1}: WIP on main:优化性能
五、协作开发规范
- 分支命名规范
#推荐格式
git checkout -b feature/user-auth #功能分支
git checkout -b fix/payment-error #修复分支
git checkout -b release/v1.2.0 #发布分支
git checkout -b hotfix/db-crash #热修复分支
- 提交信息规范(Angular格式)
git commit -m "feat(login): 添加短信验证功能"
git commit -m "fix(api): 修复POST请求编码问题 #123"
git commit -m "docs(readme): 更新安装指南"
说明:feat
新增功能,fix
修复Bug,docs
文档变更,chore
构建工具更新
- 冲突解决示例
# 当发生冲突时,git status会提示冲突文件
git status
# 修改冲突文件(以<<<<<<<分隔的代码块)
# 手动选择保留的代码部分
git add conflict-file.txt
git commit -m "resolve merge conflict"