GIT操作 学习

登录gitee
  • 登录方式:通过网站登录,使用注册时的账号(通常是手机号)和密码进行认证
创建仓库
  • 新建仓库步骤

    • 命名规范:仓库名称应尽量符合规范,避免与已有仓库冲突,建议使用有意义的命名

    • 初始化设置:

      • 选择.gitignore模板

      • 添加README文件作为代码说明文档

      • 使用默认的单分支模型(适合初学者)

  • 仓库属性设置

    • 开源许可:创建时默认为私有仓库,后期可改为开源

    • 模板文件:

      • LICENSE文件:记录开源许可证信息

      • README文件:包含中英文两个版本的说明文档

把远端的仓库拉取下来
  • 克隆方式选择

    • 推荐协议:使用HTTPS协议而非SSH协议

      • SSH需要配置密钥对,过程复杂(所以一般不用)

      • HTTPS只需输入账号密码即可

  • 克隆操作步骤

    • 命令格式:git clone <仓库HTTPS地址>.git

    • 认证信息:

      • 用户名:gitee网站登录账号

      • 密码:gitee网站登录密码(非系统密码)

    • 结果验证:成功后会生成与仓库同名的本地目录

忽略文件操作
  • .gitignore文件作用

    • 功能原理:列出需要被git忽略的文件后缀

    • 实际效果:匹配到的文件不会被上传到远端仓库

    • 查看方式:在Linux中使用ls -al查看(因为是隐藏文件)

  • 本地仓库本质

    • 核心组成:名为.git的隐藏目录及其内容

    • 同步机制:

      • 提交操作实质是同步.git目录内容

      • 远端仓库会保存完全相同的.git目录结构

    • 版本控制:.git目录包含分支配置和提交历史等版本信息

写代码并git操作
  • 文件准备与添加

    • 文件拷贝操作:将上级目录的*.c和*.h文件拷贝到当前目录,使用make dl创建process目录后,将所有.c和.h文件移动到process目录中

    • git add作用:将新增的文件(之前git没有跟踪的文件)添加到本地仓库的临时区域

      • 特别注意:添加的是新增文件,不是修改已有文件

      • 底层原理:文件经过二进制转码后存入.git目录(具体位置暂不深究)

  • 提交操作详解

    • git commit命令:

      • 完整格式:git commit -m "提交日志"

      • 强制要求:-m选项后必须跟提交日志内容,否则会报错

      • 日志规范:

        • 禁止空白(必须填写有意义的内容)

        • 禁止随意填写(如"abcd"等无意义内容)

        • 不需要手动添加时间戳(系统自动记录)

    • commit本质:将临时区域的变更正式合并到本地仓库,此时远端仓库仍未更新

  • 推送操作与完整流程

    • git push作用:将本地仓库的变更推送到远端服务器,完成代码同步

    • 完整三步流程:

      • git add .:添加新文件到暂存区

      • git commit -m "描述":提交到本地仓库

      • git push:推送到远端仓库

    • 密码提示:push时需要输入git账号密码(非系统root密码)

  • 提交日志的重要性

    • 日志查看方式:通过git log命令可查看完整提交历史,包含:

      • 提交ID(长哈希值)

      • 作者信息(用户名+邮箱)

      • 提交时间戳

      • 提交日志内容

    • 专业要求:

      • 在团队协作中,清晰的日志有助于他人理解代码变更

      • 面试时可能被查看提交历史(如简历附git链接)

      • 错误示例:模糊的日志可能导致后期维护困难,甚至被离职后追责

  • Git环境配置

    • 安装方法:sudo apt-get install -y git(Linux环境,注意 apt-get和yum的区别)

    • 首次配置:

      • 必须设置用户名:git config --global user.name "姓名简写"

      • 必须设置邮箱:git config --global user.email "真实邮箱"

    • 配置重要性:

      • 这些信息将永久记录在提交历史中

      • 公司内部可能通过邮箱联系代码作者

      • 建议使用真实姓名简写和工作邮箱(避免私人邮箱)

验证忽略文件配置
  • .gitignore文件配置

    • 配置语法:使用*.扩展名格式指定要忽略的文件类型,例如*.txt忽略所有文本文件,*.sln忽略Visual Studio解决方案文件

    • 测试方法:

      • 创建测试文件(如test.txt)

      • 执行git status查看文件状态

      • 确认被忽略文件不会出现在待提交列表中

    • 多级目录处理:需要在仓库根目录下的.gitignore文件进行配置才会全局生效

  • 文件状态管理

    • 新增文件检测:git status会显示"Untracked files"表示新文件

    • 修改文件检测:显示"Modified"表示已跟踪文件的修改

    • 批量添加:git add .会自动添加所有未跟踪和修改的文件

  • 提交流程

    • 标准流程:

      • git add <文件> 或 git add .

      • git commit -m "提交说明"

      • git push

    • 提交说明规范:要求明确描述修改内容(如"修复野指针bug"),避免不专业的日志

远程仓库修改操作及冲突解决
  • 冲突产生场景

    • 典型场景:

      • 开发者A在远程仓库直接修改文件

      • 开发者B在本地修改同一文件

      • 开发者B尝试git push时出现冲突

  • 冲突解决方法

    • 强制同步流程:

      • 先执行git pull拉取远程变更

      • 解决可能的合并冲突

      • 重新git push

    • 错误提示:冲突时会显示"rejected"提示,要求先整合远程变更

  • 文件重命名操作

    • 正确方法:使用git mv 旧文件名 新文件名而非直接重命名

    • 操作流程:

      • git mv test.txt hello.txt

      • 提交重命名操作

      • 推送变更

  • 文件删除操作

    • 标准删除:使用git rm 文件名而非直接删除

    • 完整流程:

      • git rm xx.txt

      • git commit -m "删除临时文件"

      • git push

  • 提交记录查看

    • 日志查看:git log显示完整提交历史,包括:

      • 提交者信息

      • 提交时间

      • 提交说明

      • 变更内容

      • 注:所有Git操作建议在仓库根目录下执行以确保全局生效,部分操作(如.gitignore配置)需要提交到仓库才能完全生效。

基础操作
核心
  • 仓库克隆:git clone 用于从远程仓库克隆项目到本地

  • 添加文件:git add 将文件添加到暂存区

  • 提交更改:git commit -m "message" 提交变更并添加描述信息

常用辅助命令
  • 状态检查:git status 查看当前仓库状态

  • 日志查看:git log 查看提交历史记录

  • 文件操作:

    • git rm 删除文件

    • git mv 重命名文件

  • 远程同步:git push 将本地提交推送到远程仓库

注意事项
  • 提交不可修改:已提交记录无法直接修改,需删除仓库后重新提交(但会改变提交时间戳)

  • 设计原则:Git设计上不允许随意修改历史记录,这是版本控制系统的核心特性

常见问题
提交绿点问题
  • 更新机制:GitHub等平台的贡献绿点不是实时更新,通常会在夜间批量处理

  • 解决方案:正常提交2-3天后会自动显示,无需特殊处理

认证配置
  • 密码输入:git push时会要求输入用户名和密码

  • 免密配置:

    • 技术上支持配置免密码登录(课件中有具体方法)

    • 但不推荐初学者使用免密配置,原因有二:

      • 频繁输入有助于记忆重要密码

      • 提交门槛能防止草率提交错误代码

建议
  • 练习方式:

    • 可使用Git Bash命令行操作(支持Linux命令)

    • 也可使用图形界面工具(如TortoiseGit)

  • 学习路径:

    • 先掌握基础命令

    • 后续可逐步学习分支管理、版本回退等高级功能

  • 提交习惯:

    • 建议保持手动输入密码的习惯

    • 工作熟练后可考虑配置免密

相关推荐
碣石潇湘无限路25 分钟前
【AI篇】当Transformer模型开始学习《孙子兵法》
人工智能·学习
wu_aceo1 小时前
将本地项目提交到Gitee
git·gitee·提交·本地提交·上传git
future14122 小时前
C#每日学习日记
java·学习·c#
碎叶城李白4 小时前
若依学习笔记1-validated
java·笔记·学习·validated
im_AMBER4 小时前
学习日志05 python
python·学习
真的想上岸啊5 小时前
学习C++、QT---18(C++ 记事本项目的stylesheet)
开发语言·c++·学习
rui锐rui6 小时前
大数据学习2:HIve
大数据·hive·学习
凛铄linshuo7 小时前
爬虫简单实操2——以贴吧为例爬取“某吧”前10页的网页代码
爬虫·python·学习
大春儿的试验田8 小时前
高并发收藏功能设计:Redis异步同步与定时补偿机制详解
java·数据库·redis·学习·缓存
金色光环9 小时前
【Modbus学习笔记】stm32实现Modbus
笔记·stm32·学习