# Git 推送教程 本文档教你如何将代码推送到 Git 仓库(以 Gitea 为例)。 --- ## 📚 基础概念 ### Git 工作流程 ``` 工作区 → 暂存区 → 本地仓库 → 远程仓库 ↓ ↓ ↓ ↓ 编辑文件 git add git commit git push ``` --- ## 🚀 完整推送流程 ### 1️⃣ 查看文件状态 ```bash git status ``` **作用**: 查看哪些文件被修改、新增或删除 **输出示例**: ``` Changes not staged for commit: modified: frontend/src/App.vue Untracked files: CHANGELOG.md ``` --- ### 2️⃣ 添加文件到暂存区 #### 添加所有文件 ```bash git add -A ``` 或 ```bash git add . ``` #### 添加特定文件 ```bash git add frontend/src/App.vue git add CHANGELOG.md ``` #### 添加特定目录 ```bash git add frontend/ git add backend/ ``` **提示**: `-A` 会添加所有修改、新增和删除的文件 --- ### 3️⃣ 提交到本地仓库 ```bash git commit -m "提交说明" ``` #### 提交说明规范 **格式**: `类型: 简短描述` **常用类型**: - `feat`: 新功能 - `fix`: 修复bug - `docs`: 文档更新 - `style`: 代码格式调整 - `refactor`: 重构代码 - `perf`: 性能优化 - `test`: 测试相关 - `chore`: 构建/工具相关 **示例**: ```bash # 简单提交 git commit -m "feat: 添加用户登录功能" # 详细提交(多行) git commit -m "feat: 添加用户登录功能 - 实现登录表单 - 添加JWT认证 - 完善错误处理" ``` --- ### 4️⃣ 推送到远程仓库 ```bash git push origin main ``` **参数说明**: - `origin`: 远程仓库名称(默认) - `main`: 分支名称(也可能是 `master`) #### 首次推送 ```bash git push -u origin main ``` `-u` 参数会设置上游分支,之后只需 `git push` 即可 --- ## 🔄 完整示例 ### 场景1: 推送所有修改 ```bash # 1. 查看状态 git status # 2. 添加所有文件 git add -A # 3. 提交 git commit -m "feat: 完成首页重构" # 4. 推送 git push origin main ``` ### 场景2: 推送特定文件 ```bash # 1. 添加特定文件 git add frontend/src/App.vue git add CHANGELOG.md # 2. 提交 git commit -m "docs: 更新文档" # 3. 推送 git push origin main ``` ### 场景3: 修改上次提交 ```bash # 如果忘记添加某个文件 git add forgotten-file.txt git commit --amend --no-edit # 如果要修改提交信息 git commit --amend -m "新的提交信息" # 强制推送(谨慎使用) git push -f origin main ``` --- ## 🔧 常用命令 ### 查看相关 ```bash # 查看状态 git status # 查看提交历史 git log # 查看简洁历史 git log --oneline # 查看远程仓库 git remote -v # 查看分支 git branch ``` ### 撤销相关 ```bash # 撤销工作区修改 git checkout -- filename # 撤销暂存区(保留工作区修改) git reset HEAD filename # 撤销上次提交(保留修改) git reset --soft HEAD^ # 撤销上次提交(不保留修改) git reset --hard HEAD^ ``` ### 分支相关 ```bash # 查看所有分支 git branch -a # 创建新分支 git branch feature-name # 切换分支 git checkout feature-name # 创建并切换分支 git checkout -b feature-name # 合并分支 git merge feature-name # 删除分支 git branch -d feature-name ``` --- ## 🎯 快速推送(一键命令) ### 创建快捷脚本 创建文件 `push.sh`: ```bash #!/bin/bash # 快速推送脚本 echo "📝 查看状态..." git status echo "" echo "➕ 添加所有文件..." git add -A echo "" echo "💬 请输入提交信息:" read commit_message echo "" echo "📦 提交中..." git commit -m "$commit_message" echo "" echo "🚀 推送到远程仓库..." git push origin main echo "" echo "✅ 推送完成!" ``` **使用方法**: ```bash # 添加执行权限 chmod +x push.sh # 运行脚本 ./push.sh ``` --- ## 🔐 配置 Git ### 设置用户信息 ```bash # 全局配置 git config --global user.name "你的名字" git config --global user.email "your.email@example.com" # 项目配置 git config user.name "你的名字" git config user.email "your.email@example.com" ``` ### 查看配置 ```bash # 查看所有配置 git config --list # 查看特定配置 git config user.name git config user.email ``` ### 保存密码(HTTPS) ```bash # 永久保存 git config --global credential.helper store # 临时保存(15分钟) git config --global credential.helper cache ``` --- ## 🌐 远程仓库操作 ### 添加远程仓库 ```bash git remote add origin https://git.vcck.cn/nvex/ns2.0.git ``` ### 修改远程仓库地址 ```bash git remote set-url origin https://new-url.git ``` ### 查看远程仓库 ```bash git remote -v ``` ### 删除远程仓库 ```bash git remote remove origin ``` --- ## ⚠️ 常见问题 ### 1. 推送被拒绝 **错误**: `! [rejected] main -> main (fetch first)` **原因**: 远程仓库有新的提交 **解决**: ```bash # 拉取远程更新 git pull origin main # 如果有冲突,解决后再推送 git push origin main ``` ### 2. 合并冲突 **解决步骤**: ```bash # 1. 查看冲突文件 git status # 2. 手动编辑冲突文件,删除冲突标记 # <<<<<<< HEAD # 你的修改 # ======= # 远程的修改 # >>>>>>> branch-name # 3. 添加解决后的文件 git add conflict-file.txt # 4. 提交 git commit -m "fix: 解决合并冲突" # 5. 推送 git push origin main ``` ### 3. 忘记添加文件 ```bash # 添加遗漏的文件 git add forgotten-file.txt # 修改上次提交 git commit --amend --no-edit # 强制推送(如果已经推送过) git push -f origin main ``` ### 4. 推送到错误的分支 ```bash # 撤销推送(本地) git reset --hard HEAD^ # 推送到正确的分支 git push origin correct-branch ``` --- ## 📋 推送检查清单 推送前检查: - [ ] 代码已测试,没有明显错误 - [ ] 敏感信息已删除(密码、密钥等) - [ ] `.gitignore` 已配置正确 - [ ] 提交信息清晰明确 - [ ] 已拉取最新代码(避免冲突) --- ## 🎓 进阶技巧 ### 1. 交互式添加 ```bash git add -p ``` 可以选择性地添加文件的部分修改 ### 2. 暂存修改 ```bash # 暂存当前修改 git stash # 查看暂存列表 git stash list # 恢复暂存 git stash pop # 删除暂存 git stash drop ``` ### 3. 查看差异 ```bash # 查看工作区和暂存区的差异 git diff # 查看暂存区和仓库的差异 git diff --staged # 查看两次提交的差异 git diff commit1 commit2 ``` ### 4. 标签管理 ```bash # 创建标签 git tag v1.0.0 # 创建带注释的标签 git tag -a v1.0.0 -m "版本 1.0.0" # 推送标签 git push origin v1.0.0 # 推送所有标签 git push origin --tags ``` --- ## 📱 图形化工具推荐 如果不习惯命令行,可以使用图形化工具: 1. **GitHub Desktop** - 简单易用 2. **SourceTree** - 功能强大 3. **GitKraken** - 界面美观 4. **VS Code** - 内置Git功能 5. **Tower** - Mac专用,功能完善 --- ## 🔗 相关资源 - [Git 官方文档](https://git-scm.com/doc) - [Git 教程 - 廖雪峰](https://www.liaoxuefeng.com/wiki/896043488029600) - [GitHub Guides](https://guides.github.com/) - [Git Cheat Sheet](https://education.github.com/git-cheat-sheet-education.pdf) --- ## 💡 最佳实践 1. **频繁提交**: 小步快跑,每完成一个功能就提交 2. **清晰的提交信息**: 让别人(和未来的自己)能看懂 3. **使用分支**: 新功能在新分支开发,完成后合并 4. **定期推送**: 避免本地代码丢失 5. **拉取后推送**: 推送前先拉取最新代码 6. **检查 .gitignore**: 不要提交敏感信息和临时文件 7. **代码审查**: 推送前检查修改内容 --- **最后更新**: 2024-12-XX **作者**: NEXT Store Team