文章目录
- 在开始之前,确保你的系统已经安装了Git。可以通过以下命令检查: git –version 如果未安装,请访问Git官网下载安装包。
- 首次使用Git时,需要配置你的身份信息,这些信息会包含在每一次提交记录中: git config –global user.name “你的姓名” git config –global user.email “你的邮箱” git config –global core.editor “vim” 设置默认编辑器,可选
- 克隆是将远程仓库完整复制到本地的过程。Gitee提供两种URL协议: HTTPS协议:适合初学者,无需额外配置 SSH协议:更安全,适合频繁操作 SSH密钥配置(推荐): 生成SSH密钥对 ssh-keygen -t rsa -C “your_email@example.com” 查看公钥 cat ~/.ssh/id_rsa.pub 将公钥内容复制到Gitee的SSH密钥设置页面(个人设置 → SSH公钥)。 克隆命令: 使用HTTPS克隆 git clone https://gitee.com/username/project-name.git 使用SSH克隆(配置好SSH密钥后) git clone git@gitee.com:username/project-name.git 克隆完成后,会自动创建一个与仓库同名的目录,并初始化本地仓库。
- 让我们通过一个具体的例子来演示完整的Git工作流程。
-
- 当你正在开发时,队友可能已经推送了新的提交: 保存当前未提交的更改(可选) git stash 获取远程更新 git fetch origin 合并到当前分支 git merge origin/main 恢复暂存的更改(如果使用了stash) git stash pop 解决可能的冲突 编辑有冲突的文件,然后: git add <解决冲突的文件> git commit -m “解决合并冲突”
- 撤销最后一次提交,保留更改在工作区 git reset –soft HEAD~1 完全撤销最后一次提交,丢弃更改 git reset –hard HEAD~1 撤销特定的提交(创建反向提交) git revert <commit-hash>
- 良好的提交信息有助于团队协作和后期维护。推荐使用Conventional Commits规范: <类型>[可选范围]: <描述> [可选正文] [可选脚注] 常见类型: feat: 新功能 fix: 修复bug docs: 文档更新 style: 代码格式调整 refactor: 重构代码 test: 测试相关 chore: 构建过程或辅助工具变动
- 合理配置.gitignore可以避免将不必要的文件提交到仓库: 操作系统文件 .DS_Store Thumbs.db 编辑器文件 .vscode/ .idea/ *.swp *.swo 运行时文件 __pycache__/ *.pyc *.pyo 依赖目录 node_modules/ venv/ .env 日志文件 *.log 构建产物 dist/ build/
- 推荐使用Git Flow或简化版的分支策略: main/master: 生产就绪代码 develop: 开发集成分支 feature/: 功能开发分支 hotfix/: 紧急修复分支 release/: 发布准备分支
- 设置别名可以大大提高工作效率: 添加到~/.gitconfig或使用命令 git config –global alias.co checkout git config –global alias.br branch git config –global alias.ci commit git config –global alias.st status git 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”
- 先拉取最新代码 git pull origin main 解决冲突(编辑标记了冲突的文件) 添加解决后的文件 git add <冲突文件> 继续合并 git commit 重新推送 git push origin main
- 从历史中完全删除包含敏感信息的文件 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
- 查看所有提交记录(包括已删除的) git reflog 恢复特定的提交 git checkout <commit-hash> — <文件名> 恢复被删除的分支 git checkout -b restored-branch <commit-hash>
- ==================================================== 第一部分:环境准备和项目克隆 ==================================================== 1. 配置全局用户信息(首次使用Git时需要) git config –global user.name “张三” git config –global user.email “zhangsan@example.com” 2. 配置SSH密钥(可选,但推荐) ssh-keygen -t rsa -b 4096 -C “zhangsan@example.com” 执行后会生成~/.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 git@gitee.com: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.py git 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 origin git 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> 安全的撤销方式,会创建新的反向提交
- ==================================================== 第一部分:项目初始化 ==================================================== 1. 创建项目目录 mkdir my-awesome-project cd my-awesome-project 2. 初始化Git仓库 git init 创建.git目录,开始版本控制 3. 创建项目基础结构 echo ” My Awesome Project” >> README.md echo “这是项目描述” >> README.md 4. 创建.gitignore文件 cat > .gitignore << EOF 依赖目录 node_modules/ venv/ __pycache__/ 环境文件 .env .env.local 日志文件 *.log npm-debug.log* 编辑器文件 .vscode/ .idea/ *.swp 系统文件 .DS_Store Thumbs.db 构建产物 dist/ build/ *.exe EOF 5. 创建源代码结构 mkdir src mkdir tests mkdir docs 6. 创建初始代码文件 echo “def main():” > src/app.py echo ” print(‘Hello, World!’)” >> src/app.py echo “” >> src/app.py echo “if __name__ == ‘__main__’:” >> src/app.py echo ” main()” >> src/app.py 7. 创建测试文件 echo “import unittest” > tests/test_app.py echo “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 git@gitee.com: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.py echo ” return ‘New feature implemented'” >> src/app.py 20. 测试修改 git diff 查看具体修改内容 21. 添加并提交 git add src/app.py git commit -m “feat: 添加新功能函数” 22. 创建功能分支 git checkout -b feature/calculator 23. 实现功能 cat > src/calculator.py << EOF def add(a, b): return a + b def subtract(a, b): return a – b def multiply(a, b): return a * b def divide(a, b): if b == 0: raise ValueError(“除数不能为零”) return a / b EOF 24. 添加测试 cat > tests/test_calculator.py << EOF import unittest from 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.py git commit -m “feat: 添加计算器模块和测试” 26. 切换回开发分支并合并功能 git checkout develop git 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 main git merge release/v1.0.0 –no-ff git tag -a v1.0.0 -m “版本1.0.0发布” git push origin main –tags 31. 删除发布分支 git branch -d release/v1.0.0 git push origin –delete release/v1.0.0
- ==================================================== 实用快捷命令和别名 ==================================================== 1. 设置常用别名 git config –global alias.co checkout git config –global alias.br branch git config –global alias.ci commit git config –global alias.st status git 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 start git 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” fi if [ “$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拉取到推送流程的资料请关注风君子博客其它相关文章! 您可能感兴趣的文章: IDEA升级后Git拉取和推送的标签消失的解决方法 git push & git pull 推送/拉取分支的具体使用
目录
- 引言
- 第一部分:Git基础概念回顾
- 1.1 Git的核心工作区
- 1.2 本地仓库与远程仓库的关系
- 第二部分:从Gitee克隆项目到本地
- 2.1 初始环境准备
- 2.2 配置Git用户信息(首次使用)
- 2.3 克隆远程仓库
- 第三部分:日常开发工作流详解
- 3.1 完整示例:从拉取到提交的全过程
- 场景描述
- 3.2 处理常见的协作场景
- 场景A:同步他人提交的更改
- 场景B:撤销错误的提交
- 第四部分:从零创建项目并推送到Gitee
- 第五部分:Git最佳实践和高级技巧
- 5.1 提交信息的规范
- 5.2 .gitignore文件的配置
- 5.3 分支管理策略
- 5.4 高效的Git命令别名
- 第六部分:常见问题与解决方案
- 6.1 推送时遇到冲突
- 6.2 误提交了敏感信息
- 6.3 恢复误删的文件或分支
- 结语
- 附件:完整命令流程示例
- 示例一:从Gitee克隆项目并完成首次功能开发
- 示例二:本地新建项目并推送到Gitee
- 示例三:常用Git操作快捷命令
- 示例四:错误处理和恢复操作
在当今的软件开发中,Git已经成为版本控制的代名词。无论是个人项目还是团队协作,掌握Git的基本工作流程都是每一位开发者必备的技能。作为中国开发者常用的代码托管平台,Gitee提供了稳定高效的Git服务。本文将详细介绍从Gitee拉取项目到上传修改的完整流程,并结合实际示例帮助读者快速掌握Git的核心操作。
在深入具体命令之前,我们需要理解Git的三个重要区域:
- 工作区 (Working Directory):你实际编辑文件的地方
- 暂存区 (Staging Area):准备提交的文件暂存区域
- 仓库 (Repository):存储项目历史记录和版本信息
Git的分布式特性意味着每个开发者都有完整的仓库副本。远程仓库(如Gitee)作为中央协作点,用于同步各个开发者的代码变更。
在开始之前,确保你的系统已经安装了Git。可以通过以下命令检查:
git --version
如果未安装,请访问Git官网下载安装包。
首次使用Git时,需要配置你的身份信息,这些信息会包含在每一次提交记录中:
git config --global user.name "你的姓名" git config --global user.email "你的邮箱" git config --global core.editor "vim" 设置默认编辑器,可选
克隆是将远程仓库完整复制到本地的过程。Gitee提供两种URL协议:
- HTTPS协议:适合初学者,无需额外配置
- SSH协议:更安全,适合频繁操作
SSH密钥配置(推荐):
生成SSH密钥对 ssh-keygen -t rsa -C "your_email@example.com" 查看公钥 cat ~/.ssh/id_rsa.pub
将公钥内容复制到Gitee的SSH密钥设置页面(个人设置 → SSH公钥)。
克隆命令:
使用HTTPS克隆 git clone https://gitee.com/username/project-name.git 使用SSH克隆(配置好SSH密钥后) git clone git@gitee.com:username/project-name.git
克隆完成后,会自动创建一个与仓库同名的目录,并初始化本地仓库。

让我们通过一个具体的例子来演示完整的Git工作流程。
假设我们加入了一个名为"blog-system"的开源项目团队,需要添加一个文章分类功能。
步骤1:克隆项目到本地
克隆项目 git clone git@gitee.com: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-category git 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.py git 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:推送到远程仓库
推送到Gitee git 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)
- 填写说明并提交
当你正在开发时,队友可能已经推送了新的提交:
保存当前未提交的更改(可选) git stash 获取远程更新 git fetch origin 合并到当前分支 git merge origin/main 恢复暂存的更改(如果使用了stash) git stash pop 解决可能的冲突 编辑有冲突的文件,然后: git add <解决冲突的文件> git commit -m "解决合并冲突"
撤销最后一次提交,保留更改在工作区
git reset --soft HEAD~1
完全撤销最后一次提交,丢弃更改
git reset --hard HEAD~1
撤销特定的提交(创建反向提交)
git revert <commit-hash>

完整示例:本地新建Git项目
有时候我们需要从零开始一个项目,然后将其推送到Gitee进行管理和协作。
步骤1:在Gitee创建空仓库
- 登录Gitee,点击右上角"+"号
- 选择"新建仓库"
- 填写仓库名称、描述等信息
- 不要初始化README、.gitignore等文件(我们将从本地创建)
- 点击"创建"
步骤2:本地初始化项目
创建项目目录 mkdir my-new-project cd my-new-project 初始化Git仓库 git init 查看状态 git status
步骤3:创建项目文件
创建基础项目结构 echo " My New Project" > README.md echo "__pycache__/" > .gitignore echo "*.pyc" >> .gitignore echo "venv/" >> .gitignore 创建源代码目录和文件 mkdir src touch src/main.py touch src/__init__.py 创建配置文件 touch config.yaml
步骤4:首次提交
添加所有文件 git add . 提交初始版本 git commit -m "初始提交:项目基础结构" 查看提交历史 git log --oneline
步骤5:连接远程仓库
添加远程仓库地址 git remote add origin git@gitee.com:username/my-new-project.git 验证远程仓库 git remote -v 输出: origin git@gitee.com:username/my-new-project.git (fetch) origin git@gitee.com:username/my-new-project.git (push)
步骤6:推送代码
推送代码到Gitee git push -u origin main 如果遇到错误,可能是因为远程仓库有README文件 可以先拉取再推送 git pull origin main --allow-unrelated-histories git push origin main
步骤7:后续开发流程
现在项目已经在Gitee上,后续开发就回到了我们熟悉的流程:
开发新功能
echo "print('Hello, Git!')" > src/main.py
提交更改
git add src/main.py
git commit -m "添加主程序入口"
推送更新
git push origin main
良好的提交信息有助于团队协作和后期维护。推荐使用Conventional Commits规范:
<类型>[可选范围]: <描述> [可选正文] [可选脚注]
常见类型:
- feat: 新功能
- fix: 修复bug
- docs: 文档更新
- style: 代码格式调整
- refactor: 重构代码
- test: 测试相关
- chore: 构建过程或辅助工具变动
合理配置.gitignore可以避免将不必要的文件提交到仓库:
操作系统文件 .DS_Store Thumbs.db 编辑器文件 .vscode/ .idea/ *.swp *.swo 运行时文件 __pycache__/ *.pyc *.pyo 依赖目录 node_modules/ venv/ .env 日志文件 *.log 构建产物 dist/ build/
推荐使用Git Flow或简化版的分支策略:
- main/master: 生产就绪代码
- develop: 开发集成分支
- feature/: 功能开发分支
- hotfix/: 紧急修复分支
- release/: 发布准备分支
设置别名可以大大提高工作效率:
添加到~/.gitconfig或使用命令 git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit git config --global alias.st status git 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"
先拉取最新代码
git pull origin main
解决冲突(编辑标记了冲突的文件)
添加解决后的文件
git add <冲突文件>
继续合并
git commit
重新推送
git push origin main
从历史中完全删除包含敏感信息的文件
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
查看所有提交记录(包括已删除的)
git reflog
恢复特定的提交
git checkout <commit-hash> -- <文件名>
恢复被删除的分支
git checkout -b restored-branch <commit-hash>
Git是一个强大而灵活的工具,掌握其基本工作流程是每个开发者的必修课。通过本文的详细讲解和实际示例,相信你已经掌握了从Gitee拉取项目到上传修改的完整流程。记住,Git的精髓在于"小步快跑,频繁提交"——不要等到完成一个大功能才提交,而是将工作分解为多个小提交。
实践是学习Git的最佳途径。建议你立即创建一个Gitee账户,按照本文的示例实际操作一遍,从克隆现有项目开始,逐步尝试创建自己的项目并推送到远程仓库。随着实践的增加,你会越来越熟练地使用Git管理你的代码。
Git常用命令速查手册(附详细注释)
====================================================
第一部分:环境准备和项目克隆
====================================================
1. 配置全局用户信息(首次使用Git时需要)
git config --global user.name "张三"
git config --global user.email "zhangsan@example.com"
2. 配置SSH密钥(可选,但推荐)
ssh-keygen -t rsa -b 4096 -C "zhangsan@example.com"
执行后会生成~/.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 git@gitee.com: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.py
git 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 origin
git 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>
安全的撤销方式,会创建新的反向提交
====================================================
第一部分:项目初始化
====================================================
1. 创建项目目录
mkdir my-awesome-project
cd my-awesome-project
2. 初始化Git仓库
git init
创建.git目录,开始版本控制
3. 创建项目基础结构
echo " My Awesome Project" >> README.md
echo "这是项目描述" >> README.md
4. 创建.gitignore文件
cat > .gitignore << EOF
依赖目录
node_modules/
venv/
__pycache__/
环境文件
.env
.env.local
日志文件
*.log
npm-debug.log*
编辑器文件
.vscode/
.idea/
*.swp
系统文件
.DS_Store
Thumbs.db
构建产物
dist/
build/
*.exe
EOF
5. 创建源代码结构
mkdir src
mkdir tests
mkdir docs
6. 创建初始代码文件
echo "def main():" > src/app.py
echo " print('Hello, World!')" >> src/app.py
echo "" >> src/app.py
echo "if __name__ == '__main__':" >> src/app.py
echo " main()" >> src/app.py
7. 创建测试文件
echo "import unittest" > tests/test_app.py
echo "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 git@gitee.com: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.py
echo " return 'New feature implemented'" >> src/app.py
20. 测试修改
git diff
查看具体修改内容
21. 添加并提交
git add src/app.py
git commit -m "feat: 添加新功能函数"
22. 创建功能分支
git checkout -b feature/calculator
23. 实现功能
cat > src/calculator.py << EOF
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
if b == 0:
raise ValueError("除数不能为零")
return a / b
EOF
24. 添加测试
cat > tests/test_calculator.py << EOF
import unittest
from 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.py
git commit -m "feat: 添加计算器模块和测试"
26. 切换回开发分支并合并功能
git checkout develop
git 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 main
git merge release/v1.0.0 --no-ff
git tag -a v1.0.0 -m "版本1.0.0发布"
git push origin main --tags
31. 删除发布分支
git branch -d release/v1.0.0
git push origin --delete release/v1.0.0
====================================================
实用快捷命令和别名
====================================================
1. 设置常用别名
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git 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 start
git 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"
fi
if [ "$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拉取到推送流程的资料请关注风君子博客其它相关文章!
您可能感兴趣的文章:
- IDEA升级后Git拉取和推送的标签消失的解决方法
- git push & git pull 推送/拉取分支的具体使用