当前位置: 首页 > news >正文

Android Studio-Git的使用指南

一、git的基本使用流程

 

  1. git clone 克隆远程资源到本地目录,作为工作目录;
  2. 然后在本地的克隆目录上添加或修改文件;
  3. 如果远程修改了,需要同步远程的内容,直接git pull就可以更新本地的文件;
  4. 本地在修改之后,可以通过git status 查看修改的文件。然后使用git add添加修改的文件暂到缓冲区
  5. 在添加之后,可以使用git commit添加到当前的工作区
  6. 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交;
  7. git push将本地的修改推送到远程的git服务器。

二、Git对象实现原理

        在git中以存储键值对(key-value)的方式来存储文件。它允许插入任意类型的内容,并会返回一个键值,通过该键值可以在任何时候再取出该内容。git的kv中value一般有以下几种类型blobtreecommit

1.git add底层原理

        简单说就是:在调用git add后会生成一个blob对象,然后将该对象add放进进index区。

        详细的说:git add命令把工作目录里的修改保存到暂存区(也就是索引)。它会为每个文件生成一个 Blob 对象(存储文件内容的哈希值)或树对象(记录目录结构),并将这些对象存于.git/objects目录。

        暂存区的信息保存在.git/index文件中,该文件会记录文件路径、时间戳和哈希值等。

        每次执行git add,都会覆盖暂存区中对应文件之前的记录,这样就能分多次对同一文件进行部分更新。暂存区的作用是让用户可以把逻辑相关的修改组合在一起,方便后续处理。

2.git commit底层原理

        简单说就是:进行代码提交时,需要根据暂存区的内容,先生成tree对象,再生成commit对象,然后会将记录记录到logs文件夹下。

        详细的说:git commit在底层会依据暂存区的内容生成一个提交对象(Commit Object),该对象包含父提交哈希(用于链接历史提交)、作者 / 提交者信息、提交信息以及指向根树对象(Tree Object)的哈希值。

        树对象记录了文件路径、权限和 Blob 对象(存储文件内容)的引用关系。提交对象以 SHA - 1 哈希值为标识存储在.git/objects目录中。

        提交操作会更新当前分支指针(如master),使其指向新生成的提交哈希,同时 HEAD 指针仍指向当前分支。多次提交会形成一条通过父哈希链接的提交链。

3.git Merge和Rebase的区别使用

1.Merge

创建一个新的「合并提交」(Merge Commit),同时保留两个分支的历史路径。父提交指向两个分支的最新提交,形成一个树形结构。

git checkout main      # 切换到目标分支
git merge feature      # 合并 feature 分支到 main

2.Rebase

将当前分支的提交「复制」到目标分支的末尾,形成一条线性的提交历史。原始提交会被丢弃,生成新的提交对象(哈希值改变)。

git checkout feature   # 切换到待变基的分支
git rebase main        # 将 feature 分支的提交移到 main 分支末尾

        Git 的合并工具有 Merge 和 Rebase 两种核心方式,它们的目标都是整合分支修改,但实现路径不同。

        Merge 通过创建一个新的「合并提交」(Merge Commit)来整合分支,这个提交同时指向两个分支的最新提交,形成树形结构,完整保留分支的创建和合并历史。

        其优点是操作简单、适合团队协作,能清晰展示分支演变过程;缺点是可能使提交历史变得复杂。

        例如,将 feature 分支合并到 main 分支后,会保留两条分支路径及合并节点。Merge 适用于需要保留完整时间线的场景,如多人并行开发时快速集成代码。

        Rebase 则是将当前分支的提交「复制」到目标分支的末尾,通过丢弃原始提交并生成新的提交对象,形成一条线性的提交历史。

        这种方式使提交记录更简洁,适合个人在推送到远程前整理本地分支,但需注意避免对已共享的远程分支执行 rebase,以免导致团队协作冲突。

        例如,将 feature 分支变基到 main 分支后,历史记录会变成一条直线,隐藏分支分叉的过程。Rebase 的优势在于生成清晰的线性历史,便于快速浏览和理解代码演进,但其本质是「历史重写」,操作时需格外谨慎。

4.Reset重置使用

        简单来说:git reset 是 Git 中用于撤销提交或移动分支指针的核心命令,其本质是通过修改分支指针的指向来改变当前工作目录的状态。根据不同的参数,它可以精确控制撤销的范围(仅修改提交历史、重置暂存区或同时回滚工作目录)。

        详细来说:Git 的git reset命令用于撤销提交或移动分支指针,通过修改分支指针的指向来改变工作目录状态,

        其核心参数有三种模式:

        --soft仅移动分支指针,保留暂存区和工作目录,撤销的提交内容仍可直接提交;

        --mixed(默认)移动分支指针并重置暂存区,保留工作目录,需重新git add才能提交;

        --hard则彻底回滚,移动分支指针、重置暂存区并丢弃工作目录的修改,可能导致永久丢失数据。

        此外,--keep模式会在回滚时自动储藏未提交的修改,重置后可恢复。

        git reset适用于本地未推送的错误提交,但需避免对已共享的远程分支使用,以免引发协作冲突。与git revert不同,reset是删除提交记录,而revert是创建新提交来撤销旧提交。

三、Android studio的Git工作区使用

        Git管理代码分为工作区间、暂存区和版本库三个区域,我们在工作区间写代码,写完之后需要将创建的文件或修改的代码添加到暂存区,然后才能提交到版本库,我们不能把工作区间的修改直接提交到版本库。

1.工作区(Working Directory)即项目在磁盘上的实际文件,包括你正在编辑的代码。初始状态下,Git 不会跟踪未添加的新文件。

2.暂存区(Staging Area)也称为索引(Index),是一个中间区域,用于准备提交的内容。可以选择部分文件或文件的部分内容添加到暂存区。

3.本地仓库(Local Repository)存储已经提交的历史版本,包含提交对象和引用。

4.远程仓库(Remote Repository)托管在 GitHub、GitLab 等平台的共享仓库。

在 Android Studio 中使用 Git 工作区

1. 初始化 Git 仓库

  • 操作步骤:VCS → Enable Version Control Integration → 选择 Git

  • 此时项目根目录会生成一个隐藏的.git文件夹

2. 添加文件到暂存区

  • 操作 1:通过 Git 菜单提交

    • 选择需要提交的文件(变更列表中显示)

    • 右键 → Git → Commit File...

    • 在弹出的对话框中,未勾选的文件仅添加到暂存区

# 添加单个文件到暂存区
git add app/src/main/java/com/example/MainActivity.java# 添加所有修改的文件到暂存区
git add .# 添加特定目录下的所有文件
git add app/src/    

3. 提交到本地仓库

  • 操作 2:在 Commit 对话框中

    1. 填写提交信息

    2. 点击 Commit 按钮(仅提交到本地仓库)

    3. 点击 Commit and Push 可直接推送到远程仓库

4. 推送到远程仓库

  • 操作 3:Push 操作

    1. VCS → Git → Push

    2. 选择远程仓库和分支

    3. 点击 Push 按钮

5. 撤销操作

  1. 撤销工作区修改:右键文件 → Git → Revert

  2. 撤销暂存区文件:使用git reset HEAD <file>

  3. 撤销提交:使用git revert <commit>创建一个反向提交

四、Git总结

        Git 是一种分布式版本控制系统,

        其基本使用流程包括:

        首先通过git clone将远程仓库克隆到本地作为工作目录,在本地进行文件的添加或修改;若远程仓库有更新,使用git pull同步内容;

        本地修改后,通过git status查看状态,使用git add将修改添加到暂存区,再用git commit提交到本地仓库,若提交有误可通过git resetgit revert撤回并重新提交,最后使用git push将本地修改推送到远程仓库。

        Git 以键值对方式存储文件,其中值的类型有 blob、tree、commit,git add会生成 blob 对象并存于.git/objects目录,暂存区信息保存在.git/index文件中;git commit会依据暂存区内容生成提交对象和树对象,更新当前分支指针。

        Git 的合并方式有 Merge 和 Rebase,Merge 通过创建新的合并提交整合分支,保留分支历史路径,Rebase 则将当前分支的提交复制到目标分支末尾,形成线性提交历史。

        git reset用于撤销提交,有--soft--mixed--hard等模式。在 Android Studio 中使用 Git,可通过 VCS 菜单启用版本控制、添加文件到暂存区、提交到本地仓库、推送到远程仓库,还能通过右键操作撤销工作区修改、使用命令撤销暂存区文件或提交。

http://www.lryc.cn/news/580221.html

相关文章:

  • 指数分布的Python计算与分析
  • CMD 实用命令大全
  • 【网络与系统安全】强制访问控制——Biba模型
  • Assistant API的原理及应用
  • 深入MIPI DSI显示技术栈 (四) DSI物理层——高速传输的基石
  • HLS基础(1):循环展开与存储分块
  • 深入剖析MYSQL MVCC多版本并发控制+ReadView视图快照规避幻读问题
  • Kuberrnetes 服务发布
  • AI领域新趋势:从提示(Prompt)工程到上下文(Context)工程
  • Spring Boot + 本地部署大模型实现:优化与性能提升
  • 【排序算法】
  • 模型部署与推理--利用libtorch模型部署与推理
  • 前端捕获异常的全面场景及方法
  • MYSQL 服务正在启动或停止中,请稍候片刻后再试一次。
  • Java 与 MySQL 性能优化:MySQL全文检索查询优化实践
  • 在 Ubuntu 22.04 上使用 Minikube 部署 Go 应用到 Kubernetes
  • 微服务架构下的抉择:Consul vs. Eureka,服务发现该如何选型?
  • 本地部署Dify并结合ollama大语言模型工具搭建自己的AI知识库
  • 软件反调试(4)- 基于IsDebuggerPresent的检测
  • Docker学习笔记:Docker网络
  • LDO VS DCDC
  • Redis的缓存击穿和缓存雪崩
  • [C++] C++多重继承:深入解析复杂继承关系
  • 每周资讯 | Krafton斥资750亿日元收购日本动画公司ADK;《崩坏:星穹铁道》新版本首日登顶iOS畅销榜
  • 小架构step系列04:springboot提供的依赖
  • XION:玩转您的第一个智能合约
  • WPS中配置MathType教程
  • Linux入门篇学习——Linux 帮助手册
  • 三、jenkins使用tomcat部署项目
  • 【开源品鉴】FRP源码阅读