Android学习之路(六)—— Git系列

Android学习之路(六)—— Git系列

*这里不是git的指令大全。
在这里插入图片描述

1. Git仓库数据结构

Git仓库是由一个个提交组成,也就是我们的commit
在这里插入图片描述

  • commit:一次改动的提交,每一次commit只记录了相比上一次提交的改动部分。

  • b4eb0a7642cc1719b1e3582cef932eefe237a91f:代表的是这次提交的哈希值,可以指代这次提交,每个哈希值不一样可以只取一部分代替这一次提交,如b4eb0a。

  • HEAD->master :可以看成一条分支的引用、指针。HEAD是一个特殊的引用,HEAD代表你现在操作的位置,可以指向其中的某一个提交,也可以是某一个分支引用的引用。master一般是主分支,这种一般指向一个分支最新的操作的提交。

在这里插入图片描述
在这里插入图片描述

2. add与commit操作

在这里插入图片描述

staging area:在Git中是为将改动的内容汇集以待提交,也就是图片中的Changes not staged for commit

add指令:暂时使内容加入暂存区,也就是:Changes to be committed:

3. clone命令

clone流程为:

  1. 会先把远程仓库中的所以分支引用取下来,也就是branch,然后把所以branch指向的commit取下来。
  2. 然后把从最开始的commit到master指向的commit都提取出来,然后会把仓库的branch指引与HEAD的指引指向clone下来的仓库镜像,也就是如前面看到的origin/master,这是镜像指引,在本地操作本地仓库事不会修改镜像的位置,只有与远程仓库合并时才会修改与远程仓库对应本地新的指引位置。

4. Git深之Feature Branching

  1. 当需要添加新功能或者修改bug时,需要新建一个Branch来写
  2. 写完一个Branch后,合并到master,然后删除掉一个新的Branch

这里圆圈代表每一个commit,方框为每一次的引用

在这里插入图片描述

  1. 当需要增加,修改时,就需要新建一个branch,如feature1。

    • 创建一个分支,git branch feature1
    • git checkout feature1 切换到新的分支上,后面的提交也就在feature1延升

在这里插入图片描述

  1. 当在feature1分支上上传了commit

在这里插入图片描述

  1. 然后可以往主分支master,去合并

    • 使用merge,把feature1合并到master上
    • 每一次commit一但提交就不会也不能被改变
    • git合并时有两种情况。1.feature1合并到master时,master没有新的提交,就会直接快速移动到feature1最新的提交,如master在3时,直接移动到5位置。2.当master上有新的提交,就会创建一个新的提交来合并两个提交,并把分支移动到新创建的地方。如图中6为master上的新commit,4、5为feature1的提交,合并时就会创建一个7来合并。

    在这里插入图片描述
    在这里插入图片描述

在merge时会出现冲突,处理冲突方式

文件中会有提示冲突部分,直接进入文件查看修改,然后重新提交,也有工具。

放弃解决冲突 git merge - -abort,就会回到merge前的状态。

4. git reflog

git reflog branch:查看指定的引⽤(HEAD 或 branch)的移动历史,从⽽找到之前的某个特定 commit

在这里插入图片描述

其实可以在git仓库文件中examples.git\logs\refs\中查看到每次提交操作。上面有这次commit对应的上一次hash值,这次的hash值,何人提交提交内容。

在这里插入图片描述

常用操作

  1. git init:初始创建git仓库

  2. git add:将文件修改部分添加进暂存区

    git add -i :交互式添加

    当需要某一部分修改添加进仓库时可以使用,防止一次性添加过多无法区分。

5. rebase

把当前 commit(以及它之前的 commits)应⽤到指定的需要 rebase 的 commit 上。

但是每一个commit一但提交确定就无法修改,所以就会新创建需要挪动的commit,如下面红色的commit;

在这里插入图片描述

rebase也会出现冲突,与merge冲突一样操作。

1. reset

  1. git reset 指定commit 移动到指定 commit,并保留 working tree 的内容
  2. git reset --hard 指定commit 移动到指定 commit,并重置 working tree
  3. reset与checkout一样都是移动HEAD,但是reset会把所指引到的branch引用也会移动到对应commit。
  • 34
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值