目录
提交代码到 Git 仓库是版本控制的核心操作。以下是完整的 Git 代码管理流程:
1. 初始设置(首次使用 Git 时)
# 配置用户信息(全局设置,一次即可)
git config --global user.name "你的姓名"
git config --global user.email "你的邮箱"
# 检查配置
git config --list
2. 日常提交工作流程
场景一:已有本地项目,首次连接到远程仓库
# 进入项目目录
cd your-project
# 初始化本地仓库
git init
# 添加远程仓库地址
git remote add origin https://github.com/用户名/仓库名.git
# 添加所有文件到暂存区
git add .
# 提交更改
git commit -m "初始提交:项目基础结构"
# 推送到远程仓库(首次推送需要 -u 参数)
git push -u origin main # 或 master,取决于你的默认分支名
场景二:已有远程仓库,克隆到本地
# 克隆远程仓库
git clone https://github.com/用户名/仓库名.git
# 进入项目目录
cd 仓库名
# 进行代码修改...
# 添加修改的文件到暂存区
git add 文件名 # 或 git add . 添加所有修改
# 提交更改
git commit -m "描述你的修改内容"
# 推送到远程仓库
git push origin main
3. 更精细的文件管理
# 查看当前状态(哪些文件被修改/添加/删除)
git status
# 查看具体更改内容
git diff
# 添加特定文件
git add index.html style.css script.js
# 添加所有修改的文件(不包括新文件)
git add -u
# 添加所有文件(包括新文件和修改的文件)
git add -A
# 或
git add .
# 提交时跳过暂存区,直接提交所有已跟踪文件的修改
git commit -a -m "提交所有修改"
# 撤销暂存区的文件(取消 add)
git reset 文件名
# 撤销对文件的修改(危险操作,会丢失更改)
git checkout -- 文件名
4. 提交信息规范
提交信息应该清晰明了,遵循约定式提交(Conventional Commits)更好:
类型(范围): 简短描述
详细描述(可选)
突破性变更说明(可选)
关联问题编号(可选)
常见类型:
feat
: 新功能fix
: 修复bugdocs
: 文档更新style
: 代码格式调整refactor
: 代码重构test
: 测试相关chore
: 构建过程或辅助工具变动
示例:
git commit -m "feat(用户认证): 添加第三方登录功能
- 实现Google OAuth登录
- 添加Facebook登录支持
- 更新登录页面UI
closes #123"
5. 分支管理策略
# 创建新分支
git branch 新分支名
# 切换分支
git checkout 分支名
# 创建并切换分支
git checkout -b 新分支名
# 查看所有分支
git branch -a
# 合并分支
git checkout main
git merge 功能分支名
# 删除分支
git branch -d 分支名 # 安全删除(已合并)
git branch -D 分支名 # 强制删除(未合并)
6. 高级技巧
# 修改最后一次提交(追加修改或修改提交信息)
git commit --amend
# 暂存当前工作,临时切换分支
git stash # 暂存修改
git stash pop # 恢复暂存的修改
# 查看提交历史
git log
git log --oneline --graph --all # 图形化查看
# 撤销提交(保留更改)
git reset --soft HEAD~1
# 完全撤销提交(丢弃更改)
git reset --hard HEAD~1
7. 团队协作注意事项
频繁拉取更新:开始工作前先
git pull
小步提交:每次提交只解决一个问题
明确提交信息:让他人理解你的修改意图
使用特性分支:不要在 main/master 分支直接开发
定期推送:避免本地积压太多未推送的提交
8. .gitignore 文件
创建 .gitignore
文件来排除不需要版本控制的文件:
# 依赖目录
node_modules/
vendor/
# 环境配置
.env
.env.local
# 日志文件
*.log
# 系统文件
.DS_Store
Thumbs.db
# 构建输出
dist/
build/
通过遵循这些实践,可以有效地使用 Git 管理代码,保持项目历史清晰可追溯。