git使用
练习地址:Learn Git Branching
【一】常用命令
【1】基本命令
| # 基本命令 |
| git init # 初始化git文件 |
| git status # 查看仓库状态 |
| git add 文件夹 # 把当前文件的变更提交到暂存区 |
| git add . # 把当前工作区所有变更提交到暂存区 |
| git commit -m '注释' # 把暂存区提交到版本库,变更被版本管理,以后即便删除了也能找回来 |
| |
| # 设置用户 |
| git config --global user.email "xxx@qq.com" |
| git config --global user.name "xxx" |
| |
| # 查看版本提交信息 |
| git log |
| git reflog |
| |
| # 版本回退 |
| git reset --hard 版本号 # 撤销到指定版本号 |
| git reset 文件名 # 撤销某一文件的暂存区提交 |
| git reset HEAD # 撤销所有暂存区的提交 |
| git reset . # 撤销所有暂存区的提交 |

【2】分支命令
| # 1.创建分支 |
| >: git branch 分支名 |
| |
| # 2.查看分支 |
| >: git branch |
| |
| # 3.切换分支 |
| >: git checkout 分支名 |
| |
| # 4.创建并切换到分支 |
| >: git checkout -b 分支名 |
| |
| # 5.删除分支 |
| >: git branch -d 分支名 |
| |
| # 6.查看远程分支 |
| >: git branch -a |
| |
| # 7.合并分支 |
| >: git merge 分支名 |
| # 把dev分支合并到master分支:切换到master分支,执行合并dev分支的命令 |
【3】远程仓库
| # 查看仓库已配置的远程源 |
| >: git remote |
| >: git remote -v |
| |
| # 查看remote命令帮助文档 |
| >: git remote -h |
| |
| # 删除远程源 |
| >: git remote remove 源名 |
| # eg: git remote remove origin |
| |
| # 添加远程源 |
| >: git remote add 源名 源地址 |
| # eg: git remote add orgin git@gitee.com:doctor_owen/luffyapi.git |
| |
| # 提交代码到远程源 |
| >: git push 源码 分支名 |
| |
| # 克隆远程源 |
| >: git clone 远程源地址 |
【4】使用SSH公钥,免密登录
创建SSH公钥教程:https://gitee.com/help/articles/4181
| # 创建ssh |
| ssh-keygen -t rsa -C "*@*.com" |
| # 查看ssh公钥内容 |
| cat ~/.ssh/id_rsa.pub |
| # C:\Users\用户\.ssh 文件夹中查看文件 |
- 码云配置ssh公钥
- 以后,当我使用我的这台机器登录,会自动识别电脑上对应文件夹中的私钥文件,将公钥与私钥进行非对称加密比对后实现识别用户


【二】其他
【1】安装
【2】本地文件配置用户
| """ |
| >: git config --global user.name '用户名' |
| >: git config --global user.email '用户邮箱' |
| |
| 注:在全局文件 C:\Users\用户文件夹\.gitconfig新建用户信息,在所有仓库下都可以使用 |
| """ |
【2.1】设置局部用户
| git config user.name '用户名' |
| git config user.email '用户邮箱' |
| |
| # 注:在当前仓库下的config新建用户信息,只能在当前仓库下使用 |
| # 注:一个仓库有局部用户,优先使用局部用户,没有配置再找全局用户 |
【3】撤销工作区操作
| git checkout . # 撤销所有暂存区的提交 |
| git checkout 文件名 # 撤销某一文件的暂存区提交 |
【4】查看日志
| """ |
| 回滚暂存区已经提交到版本库的操作: |
| 查看历史版本: |
| >: git log |
| >: git reflog |
| 查看时间点之前|之后的日志: |
| >: git log --after 2018-6-1 |
| >: git log --before 2018-6-1 |
| >: git reflog --after 2018-6-1 |
| >: git reflog --before 2018-6-1 |
| 查看指定开发者日志 |
| >: git log --author author_name |
| >: git reflog --author author_name |
| 回滚到指定版本: |
| 回滚到上一个版本: |
| >: git reset --hard HEAD^ |
| >: git reset --hard HEAD~ |
| 回滚到上三个版本: |
| >: git reset --hard HEAD^^^ |
| >: git reset --hard HEAD~3 |
| 回滚到指定版本号的版本: |
| >: git reset --hard 版本号 (重点) |
| >: eg: git reset --hard 35cb292 |
| """ |
【5】过滤文件.gitignore
| |
| |
| |
| |
| |
| """ 过滤文件内容 |
| 文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤 |
| /文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤 |
| |
| eg: |
| a.txt:项目中所有a.txt文件和文件夹都会被过滤 |
| /a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤 |
| /b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤 |
| *x*:名字中有一个x的都会被过滤(*代表0~n个任意字符) |
| 空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件) |
| """ |
| .idea |
| *.log |
| *.pyc |
| __pycache__ |
| **/migrations/*.py |
| !**/migrations/__init__.py |
| .venv |
| scripts |
| db.sqlite3 |
【6】冲突解决
| """ |
| 1)在远程仓库和本地仓库版本不一致时,拉取远程仓库版本到本地时,两个版本进入融合,可能会出现版本冲突 |
| |
| 2)定位冲突文件冲突代码,线下沟通冲突代码,整合代码解决冲突 |
| |
| 3)将解决冲突后的代码重新提交到本地版本库 |
| |
| 4)再拉去远程仓库,直到没有冲突,提交本地版本库到远程 |
| """ |
| |
| """ |
| <<<<<<< HEAD # 冲突的开始 |
| # 自己的代码 |
| ======= # 分割线 |
| # 别人的代码 |
| >>>>>>> b63c408abd05b87fc492d40523240561999dba50 # 冲突的结束(版本) |
| """ |
| |
| """ |
| 1)删除冲突相关标识:冲突的开始、分割线、冲突的结束(版本) |
| 2)线下沟通,根据实际需求完成代码整合 |
| 3)测试整合后的代码 |
| |
| """ |
| |
| """ |
| 出现冲突的前提: |
| 1)不同开发者同时操作了同一文件 |
| 2)并且在相同行写了代码 |
| 强调:有业务交际时,版本合并不一定会出现冲突相关的标识,但是可能会带着代码运行崩溃,所有理论上每一次版本合并,都要测试合并后的所有功能(及其之少的情况) |
| """ |
【7】线上分支合并


【8】远程仓库回滚
| """ |
| 用dev分支举例 |
| 1)本地切换到远程要回滚的分支对应的本地分支 |
| git checkout dev |
| |
| 2)回滚本地分支 |
| git reset --hard 版本号 |
| |
| 3)本地版本强行提交给服务器 |
| git push origin dev -f |
| """ |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了