最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
从Gitee拉取项目到上传修改的全流程
时间:2026-06-08 08:23:54 编辑:袖梨 来源:一聚教程网
引言
在当今的软件开发中,Git已经成为版本控制的代名词。无论是个人项目还是团队协作,掌握Git的基本工作流程都是每一位开发者必备的技能。作为中国开发者常用的代码托管平台,Gitee提供了稳定高效的Git服务。本文将详细介绍从Gitee拉取项目到上传修改的完整流程,并结合实际示例帮助读者快速掌握Git的核心操作。
第一部分:Git基础概念回顾
1.1 Git的核心工作区
在深入具体命令之前,我们需要理解Git的三个重要区域:
- 工作区 (Working Directory):你实际编辑文件的地方
- 暂存区 (Staging Area):准备提交的文件暂存区域
- 仓库 (Repository):存储项目历史记录和版本信息
1.2 本地仓库与远程仓库的关系
Git的分布式特性意味着每个开发者都有完整的仓库副本。远程仓库(如Gitee)作为中央协作点,用于同步各个开发者的代码变更。
第二部分:从Gitee克隆项目到本地
2.1 初始环境准备
在开始之前,确保你的系统已经安装了Git。可以通过以下命令检查:
git --version
如果未安装,请访问Git官网下载安装包。
2.2 配置Git用户信息(首次使用)
首次使用Git时,需要配置你的身份信息,这些信息会包含在每一次提交记录中:
git config --global user.name "你的姓名"git config --global user.email "你的邮箱"git config --global core.editor "vim" 设置默认编辑器,可选
2.3 克隆远程仓库
克隆是将远程仓库完整复制到本地的过程。Gitee提供两种URL协议:
- HTTPS协议:适合初学者,无需额外配置
- SSH协议:更安全,适合频繁操作
SSH密钥配置(推荐):
生成SSH密钥对ssh-keygen -t rsa -C "[email protected]" 查看公钥cat ~/.ssh/id_rsa.pub
将公钥内容复制到Gitee的SSH密钥设置页面(个人设置 → SSH公钥)。
克隆命令:
使用HTTPS克隆git clone https://gitee.com/username/project-name.git 使用SSH克隆(配置好SSH密钥后)git clone [email protected]:username/project-name.git
克隆完成后,会自动创建一个与仓库同名的目录,并初始化本地仓库。
第三部分:日常开发工作流详解

3.1 完整示例:从拉取到提交的全过程
让我们通过一个具体的例子来演示完整的Git工作流程。
场景描述
假设我们加入了一个名为"blog-system"的开源项目团队,需要添加一个文章分类功能。
步骤1:克隆项目到本地
克隆项目git clone [email protected]:team-name/blog-system.git 进入项目目录cd blog-system
步骤2:查看当前分支状态
查看所有分支git branch -a 输出示例: * main remotes/origin/main remotes/origin/develop
步骤3:创建功能分支
良好的分支策略能保持主分支的稳定性。我们为新建功能创建独立分支:
创建并切换到新分支git checkout -b feature/article-category 查看当前分支git branch 输出:* feature/article-category
步骤4:获取最新代码(多人协作时很重要)
在开始编码前,确保你的基础代码是最新的:
切换到主分支git checkout main 拉取远程最新代码git pull origin main 切换回功能分支并合并主分支更新git checkout feature/article-categorygit merge main
步骤5:进行开发工作
现在可以开始编写代码了。假设我们创建了两个新文件:
创建分类模型文件touch models/category.py 创建分类视图文件touch views/category_view.py 编辑一些现有文件vim controllers/article_controller.py
步骤6:查看和审查更改
完成代码编写后,查看我们做了哪些修改:
查看工作区状态git status 输出示例: On branch feature/article-category Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: controllers/article_controller.py modified: README.md# Untracked files: (use "git add <file>..." to include in what will be committed) models/category.py views/category_view.py
查看具体的代码变更:
查看具体修改内容git diff controllers/article_controller.py 查看所有变更的摘要git diff --stat
步骤7:将更改添加到暂存区
选择性地或全部添加更改到暂存区:
添加特定文件git add models/category.pygit add views/category_view.py 或者添加所有更改(谨慎使用)git add . 再次查看状态git status 此时会显示"Changes to be committed"
步骤8:提交更改到本地仓库
提交更改git commit -m "feat: 添加文章分类功能- 创建Category数据模型- 实现分类的CRUD操作- 在文章控制器中集成分类选择- 更新相关文档" 查看提交历史git log --oneline -5
步骤9:推送到远程仓库
推送到Giteegit push origin feature/article-category 如果是首次推送该分支,使用-u参数建立跟踪关系git push -u origin feature/article-category
步骤10:创建合并请求(Pull Request)
推送完成后,在Gitee页面上:
- 进入项目页面
- 点击"Pull Requests"
- 点击"新建Pull Request"
- 选择源分支(feature/article-category)和目标分支(develop或main)
- 填写说明并提交
3.2 处理常见的协作场景
场景A:同步他人提交的更改
当你正在开发时,队友可能已经推送了新的提交:
保存当前未提交的更改(可选)git stash 获取远程更新git fetch origin 合并到当前分支git merge origin/main 恢复暂存的更改(如果使用了stash)git stash pop 解决可能的冲突 编辑有冲突的文件,然后:git add <解决冲突的文件>git commit -m "解决合并冲突"
场景B:撤销错误的提交
撤销最后一次提交,保留更改在工作区git reset --soft HEAD~1 完全撤销最后一次提交,丢弃更改git reset --hard HEAD~1 撤销特定的提交(创建反向提交)git revert <commit-hash>
第四部分:从零创建项目并推送到Gitee

完整示例:本地新建Git项目
有时候我们需要从零开始一个项目,然后将其推送到Gitee进行管理和协作。
步骤1:在Gitee创建空仓库
- 登录Gitee,点击右上角"+"号
- 选择"新建仓库"
- 填写仓库名称、描述等信息
- 不要初始化README、.gitignore等文件(我们将从本地创建)
- 点击"创建"
步骤2:本地初始化项目
创建项目目录mkdir my-new-projectcd my-new-project 初始化Git仓库git init 查看状态git status
步骤3:创建项目文件
创建基础项目结构echo " My New Project" > README.mdecho "__pycache__/" > .gitignoreecho "*.pyc" >> .gitignoreecho "venv/" >> .gitignore 创建源代码目录和文件mkdir srctouch src/main.pytouch src/__init__.py 创建配置文件touch config.yaml
步骤4:首次提交
添加所有文件git add . 提交初始版本git commit -m "初始提交:项目基础结构" 查看提交历史git log --oneline
步骤5:连接远程仓库
添加远程仓库地址git remote add origin [email protected]:username/my-new-project.git 验证远程仓库git remote -v 输出: origin [email protected]:username/my-new-project.git (fetch) origin [email protected]:username/my-new-project.git (push)
步骤6:推送代码
推送代码到Giteegit push -u origin main 如果遇到错误,可能是因为远程仓库有README文件 可以先拉取再推送git pull origin main --allow-unrelated-historiesgit push origin main
步骤7:后续开发流程
现在项目已经在Gitee上,后续开发就回到了我们熟悉的流程:
开发新功能echo "print('Hello, Git!')" > src/main.py 提交更改git add src/main.pygit commit -m "添加主程序入口" 推送更新git push origin main第五部分:Git最佳实践和高级技巧
5.1 提交信息的规范
良好的提交信息有助于团队协作和后期维护。推荐使用Conventional Commits规范:
<类型>[可选范围]: <描述>[可选正文][可选脚注]
常见类型:
- feat: 新功能
- fix: 修复bug
- docs: 文档更新
- style: 代码格式调整
- refactor: 重构代码
- test: 测试相关
- chore: 构建过程或辅助工具变动
5.2 .gitignore文件的配置
合理配置.gitignore可以避免将不必要的文件提交到仓库:
操作系统文件.DS_StoreThumbs.db 编辑器文件.vscode/.idea/*.swp*.swo 运行时文件__pycache__/*.pyc*.pyo 依赖目录node_modules/venv/.env 日志文件*.log 构建产物dist/build/
5.3 分支管理策略
推荐使用Git Flow或简化版的分支策略:
- main/master: 生产就绪代码
- develop: 开发集成分支
- feature/: 功能开发分支
- hotfix/: 紧急修复分支
- release/: 发布准备分支
5.4 高效的Git命令别名
设置别名可以大大提高工作效率:
添加到~/.gitconfig或使用命令git config --global alias.co checkoutgit config --global alias.br branchgit config --global alias.ci commitgit config --global alias.st statusgit config --global alias.unstage 'reset HEAD --'git config --global alias.last 'log -1 HEAD'git config --global alias.graph "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
第六部分:常见问题与解决方案
6.1 推送时遇到冲突
先拉取最新代码git pull origin main 解决冲突(编辑标记了冲突的文件) 添加解决后的文件git add <冲突文件> 继续合并git commit 重新推送git push origin main
6.2 误提交了敏感信息
从历史中完全删除包含敏感信息的文件git filter-branch --force --index-filter "git rm --cached --ignore-unmatch config/password.txt" --prune-empty --tag-name-filter cat -- --all 强制推送到远程(警告:这会重写历史)git push origin --force --all
6.3 恢复误删的文件或分支
查看所有提交记录(包括已删除的)git reflog 恢复特定的提交git checkout <commit-hash> -- <文件名> 恢复被删除的分支git checkout -b restored-branch <commit-hash>
结语
Git是一个强大而灵活的工具,掌握其基本工作流程是每个开发者的必修课。通过本文的详细讲解和实际示例,相信你已经掌握了从Gitee拉取项目到上传修改的完整流程。记住,Git的精髓在于"小步快跑,频繁提交"——不要等到完成一个大功能才提交,而是将工作分解为多个小提交。
实践是学习Git的最佳途径。建议你立即创建一个Gitee账户,按照本文的示例实际操作一遍,从克隆现有项目开始,逐步尝试创建自己的项目并推送到远程仓库。随着实践的增加,你会越来越熟练地使用Git管理你的代码。
Git常用命令速查手册(附详细注释)
附件:完整命令流程示例
示例一:从Gitee克隆项目并完成首次功能开发
==================================================== 第一部分:环境准备和项目克隆 ==================================================== 1. 配置全局用户信息(首次使用Git时需要)git config --global user.name "张三"git config --global user.email "[email protected]" 2. 配置SSH密钥(可选,但推荐)ssh-keygen -t rsa -b 4096 -C "[email protected]" 执行后会生成~/.ssh/id_rsa和~/.ssh/id_rsa.pub文件 3. 复制公钥到剪贴板(macOS)pbcopy < ~/.ssh/id_rsa.pub Linux系统使用:cat ~/.ssh/id_rsa.pub | xclip -selection clipboard 4. 克隆项目到本地(使用HTTPS)git clone https://gitee.com/team-name/project.git 使用SSH克隆:git clone [email protected]:team-name/project.git 5. 进入项目目录cd project ==================================================== 第二部分:分支管理和开发准备 ==================================================== 6. 查看所有分支(本地和远程)git branch -a 带*号的是当前所在分支 7. 创建并切换到新的功能分支git checkout -b feature/user-authentication -b参数表示创建新分支并切换 8. 确保本地分支与远程主分支同步git fetch origin 获取远程所有更新但不合并 9. 查看远程分支的更新情况git log origin/main --oneline -5 显示远程主分支最近5条提交 10. 合并远程主分支的更新到当前分支git merge origin/main 如果出现冲突,需要手动解决 ==================================================== 第三部分:开发过程中的代码管理 ==================================================== 11. 开发过程中查看工作区状态git status 显示哪些文件被修改、添加或删除 12. 查看具体的文件修改内容git diff src/models/user.py 查看user.py文件的详细修改 13. 添加新创建的文件到暂存区git add src/models/user.pygit add src/controllers/auth_controller.py 14. 添加修改的现有文件git add src/utils/validator.py 15. 批量添加所有修改和新文件(谨慎使用)git add . 或者 git add --all 16. 添加时排除某些文件git add src/* -- ':!src/tests/' ':!*.log' 添加src目录下除了tests和.log文件外的所有 17. 从暂存区移除误添加的文件git reset HEAD src/config.temp.json 文件保留在工作区,只是从暂存区移除 18. 查看暂存区内容git diff --cached 显示即将提交的更改 19. 提交更改到本地仓库git commit -m "feat: 实现用户认证功能- 添加User数据模型- 实现JWT token生成和验证- 创建登录和注册接口- 添加密码加密功能Closes #123" 多行提交信息,第一行是摘要,空行后是详细说明 20. 查看提交历史git log --oneline --graph -10 显示图形化提交历史,最近10条 21. 开发过程中临时保存未完成的工作git stash 将未提交的更改保存到临时栈 22. 查看所有暂存的更改git stash list 显示stash栈中的所有条目 23. 恢复最近一次暂存的更改git stash pop 应用并删除栈顶的暂存 24. 恢复特定暂存git stash apply stash@{1} 应用但不删除指定的暂存 ==================================================== 第四部分:推送到远程仓库 ==================================================== 25. 推送当前分支到远程仓库(首次推送)git push -u origin feature/user-authentication -u参数设置上游分支,后续可直接使用git push 26. 查看远程仓库信息git remote -v 显示所有远程仓库地址 27. 查看特定远程分支的详细信息git remote show origin 28. 推送到远程仓库(非首次)git push origin feature/user-authentication 29. 强制推送(谨慎使用,会覆盖远程历史)git push -f origin feature/user-authentication 仅在必要时使用,如rebase后 ==================================================== 第五部分:团队协作和代码同步 ==================================================== 30. 拉取远程分支的更新git pull origin main 相当于git fetch + git merge 31. 使用rebase方式更新(保持线性历史)git fetch origingit rebase origin/main 将本地提交应用到远程更新之后 32. 查看文件修改历史git log --follow -p src/models/user.py 显示user.py文件的完整修改历史 33. 查看谁在什么时间修改了哪一行git blame src/models/user.py 显示每行代码的最后修改者和时间 34. 撤销上一次提交但保留更改git reset --soft HEAD~1 回退到上一个提交,更改保留在工作区 35. 完全撤销上一次提交git reset --hard HEAD~1 彻底删除上一次提交,谨慎使用 36. 创建撤销某个提交的新提交git revert <commit-hash> 安全的撤销方式,会创建新的反向提交
示例二:本地新建项目并推送到Gitee
==================================================== 第一部分:项目初始化 ==================================================== 1. 创建项目目录mkdir my-awesome-projectcd my-awesome-project 2. 初始化Git仓库git init 创建.git目录,开始版本控制 3. 创建项目基础结构echo " My Awesome Project" >> README.mdecho "这是项目描述" >> README.md 4. 创建.gitignore文件cat > .gitignore << EOF 依赖目录node_modules/venv/__pycache__/ 环境文件.env.env.local 日志文件*.lognpm-debug.log* 编辑器文件.vscode/.idea/*.swp 系统文件.DS_StoreThumbs.db 构建产物dist/build/*.exeEOF 5. 创建源代码结构mkdir srcmkdir testsmkdir docs 6. 创建初始代码文件echo "def main():" > src/app.pyecho " print('Hello, World!')" >> src/app.pyecho "" >> src/app.pyecho "if __name__ == '__main__':" >> src/app.pyecho " main()" >> src/app.py 7. 创建测试文件echo "import unittest" > tests/test_app.pyecho "from src.app import main" >> tests/test_app.py ==================================================== 第二部分:首次提交 ==================================================== 8. 查看当前状态git status 应该显示所有未跟踪的文件 9. 添加所有文件到暂存区git add . 或者 git add README.md .gitignore src/ tests/ 10. 查看暂存区内容git status 文件现在应该显示为"Changes to be committed" 11. 提交初始版本git commit -m "初始提交:项目基础结构- 添加项目README文档- 配置.gitignore文件- 创建源代码和测试目录结构- 实现基础应用程序框架" 12. 验证提交git log --oneline 应该显示刚才的提交 ==================================================== 第三部分:连接远程仓库 ==================================================== 13. 在Gitee创建空仓库后,添加远程地址git remote add origin [email protected]:your-username/my-awesome-project.git 14. 验证远程仓库配置git remote -v 应该显示fetch和push的URL 15. 重命名远程仓库(如果需要)git remote rename origin gitee 当有多个远程仓库时很有用 16. 推送到远程仓库git push -u origin main 如果main分支不存在,可能需要先创建 或者使用:git push -u origin master 17. 如果远程仓库有初始文件导致冲突git pull origin main --allow-unrelated-histories 允许合并不相关的历史git push origin main ==================================================== 第四部分:后续开发工作流 ==================================================== 18. 创建开发分支git checkout -b develop 19. 开发新功能echo "def new_feature():" >> src/app.pyecho " return 'New feature implemented'" >> src/app.py 20. 测试修改git diff 查看具体修改内容 21. 添加并提交git add src/app.pygit commit -m "feat: 添加新功能函数" 22. 创建功能分支git checkout -b feature/calculator 23. 实现功能cat > src/calculator.py << EOFdef add(a, b): return a + bdef subtract(a, b): return a - bdef multiply(a, b): return a * bdef divide(a, b): if b == 0: raise ValueError("除数不能为零") return a / bEOF 24. 添加测试cat > tests/test_calculator.py << EOFimport unittestfrom src.calculator import *class TestCalculator(unittest.TestCase): def test_add(self): self.assertEqual(add(2, 3), 5) def test_divide_by_zero(self): with self.assertRaises(ValueError): divide(5, 0)EOF 25. 提交功能代码git add src/calculator.py tests/test_calculator.pygit commit -m "feat: 添加计算器模块和测试" 26. 切换回开发分支并合并功能git checkout developgit merge feature/calculator --no-ff --no-ff保留功能分支的历史 27. 删除已合并的功能分支git branch -d feature/calculator 28. 推送开发分支git push -u origin develop 29. 准备发布版本git checkout -b release/v1.0.0 在发布分支上进行最后的测试和文档更新 30. 合并到主分支git checkout maingit merge release/v1.0.0 --no-ffgit tag -a v1.0.0 -m "版本1.0.0发布"git push origin main --tags 31. 删除发布分支git branch -d release/v1.0.0git push origin --delete release/v1.0.0示例三:常用Git操作快捷命令
==================================================== 实用快捷命令和别名 ==================================================== 1. 设置常用别名git config --global alias.co checkoutgit config --global alias.br branchgit config --global alias.ci commitgit config --global alias.st statusgit config --global alias.unstage 'reset HEAD --'git config --global alias.last 'log -1 HEAD' 2. 查看图形化提交历史git config --global alias.graph "log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" 3. 简洁状态查看git config --global alias.ss "status -s" 4. 查看最后一次提交的详细内容git config --global alias.lastdetail "show --stat" 5. 使用别名git st 查看状态git co main 切换到main分支git ci -m "msg" 提交git graph 图形化历史 ==================================================== 高级操作和技巧 ==================================================== 6. 修改最近一次提交信息git commit --amend -m "新的提交信息" 如果已经推送,需要强制推送:git push --force-with-lease 7. 修改多个提交信息(交互式rebase)git rebase -i HEAD~3 会打开编辑器,可以修改最近3个提交 8. 将多个提交合并为一个(squash) 在rebase交互界面中,将pick改为squash 9. 查找包含特定字符串的提交git log --all --grep="bugfix" 在所有提交中搜索包含"bugfix"的提交 10. 查找引入bug的提交git bisect startgit bisect bad 当前版本有问题git bisect good v1.0.0 v1.0.0版本正常 Git会自动二分查找有问题的提交 11. 清理本地已合并的分支git branch --merged | grep -v "*" | xargs -n 1 git branch -d 删除所有已合并到当前分支的分支 12. 清理远程已删除的分支git fetch --prune 删除本地已不存在的远程分支引用 13. 导出特定版本的代码git archive --format=zip --output=v1.0.0.zip v1.0.0 导出v1.0.0标签版本的代码为zip文件 14. 统计代码贡献git shortlog -sn --all --no-merges 显示所有贡献者的提交数量统计 15. 统计文件更改行数git log --since="2023-01-01" --until="2023-12-31" --pretty=tformat: --numstat 显示2023年每个文件的增删行数统计
示例四:错误处理和恢复操作
==================================================== 错误恢复和撤销操作 ==================================================== 1. 恢复误删的文件 先找到文件被删除的提交git log --all --full-history -- <file-path> 恢复文件git checkout <commit-hash>^ -- <file-path> 2. 恢复被覆盖的分支 查看所有操作记录git reflog 找到分支被删除前的提交git checkout -b restored-branch <commit-hash> 3. 撤销工作区的修改(未add)git checkout -- <file-name> 或者 git restore <file-name> 4. 撤销暂存区的修改(已add但未commit)git reset HEAD <file-name> 或者 git restore --staged <file-name> 5. 修改提交的作者信息git commit --amend --author="新作者 <email>" 只修改最后一次提交 6. 批量修改作者信息git filter-branch --env-filter 'OLD_EMAIL="旧的@邮箱.com"CORRECT_NAME="正确的名字"CORRECT_EMAIL="正确的@邮箱.com"if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]then export GIT_COMMITTER_NAME="$CORRECT_NAME" export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"fiif [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]then export GIT_AUTHOR_NAME="$CORRECT_NAME" export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"fi' --tag-name-filter cat -- --branches --tags 7. 恢复误操作的git reset 查看reflog找到reset前的状态git reflog 恢复到reset前的状态git reset --hard HEAD@{1} 8. 清理未跟踪的文件git clean -n 预览哪些文件会被删除git clean -f 删除未跟踪的文件git clean -fd 删除未跟踪的文件和目录 9. 解决合并冲突后继续git add <解决冲突的文件>git merge --continue 或者 git commit 10. 取消合并操作git merge --abort 或者 git rebase --abort 11. 查找大文件git rev-list --objects --all | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | sed -n 's/^blob //p' | sort --numeric-sort --key=2 | tail -10 | cut -c 1-12,41- | $(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest 显示仓库中最大的10个文件这个速查手册涵盖了从基础到高级的Git操作,每个命令都有详细注释。建议将这些示例保存为脚本文件,在实际操作中参考使用。记住,Git是一个强大的工具,熟练掌握它会让你的开发工作更加高效和有序。
以上就是从Gitee拉取项目到上传修改的完整流程的详细内容,更多关于Gitee拉取到推送流程的资料请关注本站其它相关文章!