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

Git学习笔记(三)

目录

  • 一、diff命令
    • 1.工作目录 vs 暂存区
    • 2.暂存区 vs Git仓库
    • 3.工作目录 vs Git仓库
    • 4.Git仓库 vs Git仓库
  • 二、Git分支管理
    • 1.分支创建
    • 2.分支删除
    • 3.分支合并
    • 3.分支的本质
    • 4.分支的冲突

一、diff命令

1.工作目录 vs 暂存区

$ git diff <filename>

意义:查看文件在工作目录暂存区的差别。如果还没 add 进暂存区,则查看文件自身修改前后的差别。也可查看和另一分支的区别。

$ git diff <branch> <filename>

在text.txt文件中添加内容bbb,添加内容之后
在这里插入图片描述
使用**git status**查看文件的状态,文件状态如下:
在这里插入图片描述

2.暂存区 vs Git仓库

git diff --cached <filename>

意义:表示查看已经 add 进暂存区但是尚未 commit 的内容最新一次 commit 时的内容的差异。 也可以指定仓库版本:

git diff --cached <commit> <filename>

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

3.工作目录 vs Git仓库

git diff <commit> <filename>

意义:查看工作目录同Git仓库指定 commit 的内容的差异。
=HEAD 时:查看工作目录同最近一次 commit 的内容的差异。

git diff HEAD text.txt

在这里插入图片描述

4.Git仓库 vs Git仓库

git diff <commit> <commit>

意义:Git仓库任意两次 commit 之间的差别。
以上命令可以不指定 ,则对全部文件操作。
以上命令涉及和 Git仓库 对比的,均可指定 commit 的版本。
HEAD 最近一次 commit
HEAD^ 上次提交
HEAD~100 上100次提交
在这里插入图片描述

二、Git分支管理

Git 的默认分支就是 master。你所作的commit会在master分支上自动移动。 在多次提交操作之后,master分支指向最后那个commit object(提交对象链)。
Git 的 “master” 分支并特殊,跟其它分支没有区别。 之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它
但很多时候听别人说master分支,往往有一种 这个分支是稳定、无bug的分支。而develop往往预示这新功能,不稳定的分支。这和分支策略有关,但本质上这两个分支没区别。

1.分支创建

通过git branch来查看和创建分支。
创建标签记在HEAD指针所指向的提交点创建tag(就是当前所在分支)
查看创建的所有分支:

git branch

创建分支dev:

git branch dev

分支切换:

git checkout dev

在这里插入图片描述
创建分支与切换分支同时完成

git checkout -b dev2

这是我们在dev2分支创建一个文件A.txt并且提交。我们发现在dev2分支可以看到这个文件,当我们切换会master时候无法看到这个文件。
只有当dev2分支中使用git add . 和git commit -m两种git命令直接提交之后,在其他分支才不可见,如果只是使用了git add . 的话,在其他分支上仍然是可见的。

2.分支删除

1.不能删除自己所在的分支

git branch -d 

在这里插入图片描述
我们可以切换到master删除一个合并后的或者没有发生变化的分支
在这里插入图片描述
2.如果一个分支发生了变化不能删除
在这里插入图片描述
我们发现dev2发生了变化,同时没有合并不能删除。如果要强制删除可以

git branch -D dev2

3.分支合并

我们继续基于上面的例子,切换到master上做dev2 的合并
在这里插入图片描述
如果修改的是同一个文件也可以做同样的合并,让我们切换到dev2分支修改A.txt中的内容。在A.txt中添加了一行World。
我们切换会master分支的时候发现提示了A.txt的变动。通过合并发现master分支上也合并了dev2修改的内容,合并之后dev2就删除就被允许了。

3.分支的本质

master指向的是提交
HEAD是指向当前的分支,当前在哪个分支就指向哪个分支
在这里插入图片描述

第二张图上我们可以看到创建了dev的分支,当我们切换到dev分支的时候HEAD就会指向dev在这里插入图片描述
当我们进入.git文件夹查看HEAD的内容的时候可以看到,所处分支不同内部的文件指向就不同。
master分支
在这里插入图片描述
dev2分支
在这里插入图片描述
在这里插入图片描述

4.分支的冲突

在这里插入图片描述
我们在dev2分支里面修改A.txt文件添加一行 update by dev2后提交
在这里插入图片描述
我们在master分支里面修改A.txt文件同时添加一行 update by master后提交
在这里插入图片描述
合并时候我们发现出现冲突
在这里插入图片描述

<<<<<<<<<<<HEAD是当前指向的分支所修改
>>>>>>>>>>dev2是dev2分支修改
我们需要手工合并。修改后报了master的内容

我们可以通过图形来查看冲突的提交日志。

git log --graph

在这里插入图片描述

http://www.dtcms.com/a/491696.html

相关文章:

  • 通达信组合平台
  • 怎么做微网站推广泉州建设银行网站
  • 企业网站形象建设企业申请完域名以后 怎么把网站运行起来
  • 序列的力量——Python 内置方法的魔法解密
  • 跨数据源操作
  • 数据库圣经——第三章CRUD(一)
  • 信创学习小手册【第一天】
  • 动漫网站建设规划书模板制作网站主要包括哪些步骤
  • 基于Vue社区共享游泳馆预约系统n897q36e (程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • PyTorch Dataloader工作原理 之 default collate_fn操作
  • 2022年英语笔记
  • 东莞市的网站公司哪家好shopnc
  • 建站工具上市家居网站建设行业现状
  • 三、配置MapReduce
  • JavaScript基础提升【二】
  • 珠海网站建设培训班贵州省健康码二维码图片下载
  • orangepi lan口数据转发
  • 奥地利网站后缀wordpress扒站工具
  • 网站联系我们 怎么做地图泉州建设银行网站
  • ⸢ 柒-V⸥⤳ 可信纵深防御建设方案:技术保障 体系演进
  • 河北网站建设与推广外国人做家具的网站
  • 餐饮网站源码wordpress微信h5登录页面
  • 【Qt】9.信号和槽_信号和槽存在的意义
  • 力扣热题100道之3无重复字符的最长字串
  • java无法写入到系统盘下文件
  • java中final关键字的含义
  • wordpress封采集站ip微信营销平台有哪些
  • Golang相关知识总结
  • LeetCode算法日记 - Day 73: 最小路径和、地下城游戏
  • 设计案例网站网站自身seo优化怎么做