Git学习笔记(三)

目录

一、diff命令

1.工作目录 vs 暂存区

powershell 复制代码
$ git diff <filename>

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

powershell 复制代码
$ git diff <branch> <filename>

在text.txt文件中添加内容bbb,添加内容之后

使用**git status**查看文件的状态,文件状态如下:

2.暂存区 vs Git仓库

powershell 复制代码
git diff --cached <filename>

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

powershell 复制代码
git diff --cached <commit> <filename>


3.工作目录 vs Git仓库

powershell 复制代码
git diff <commit> <filename>

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

powershell 复制代码
git diff HEAD text.txt

4.Git仓库 vs Git仓库

powershell 复制代码
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(就是当前所在分支)

查看创建的所有分支:

powershell 复制代码
git branch

创建分支dev:

powershell 复制代码
git branch dev

分支切换:

powershell 复制代码
git checkout dev

创建分支与切换分支同时完成

powershell 复制代码
git checkout -b dev2

这是我们在dev2分支创建一个文件A.txt并且提交。我们发现在dev2分支可以看到这个文件,当我们切换会master时候无法看到这个文件。

只有当dev2分支中使用git add . 和git commit -m两种git命令直接提交之后,在其他分支才不可见,如果只是使用了git add . 的话,在其他分支上仍然是可见的。

2.分支删除

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

powershell 复制代码
git branch -d 

我们可以切换到master删除一个合并后的或者没有发生变化的分支

2.如果一个分支发生了变化不能删除

我们发现dev2发生了变化,同时没有合并不能删除。如果要强制删除可以

powershell 复制代码
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后提交

合并时候我们发现出现冲突

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

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

powershell 复制代码
git log --graph
相关推荐
别动我齐刘海5 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
志尊宝6 小时前
Vue3 零基础每日笔记(071):暗黑模式与主题切换——CSS 变量 + Element Plus 暗黑方案
前端·css·笔记·vue·html·前端开发·软件开发
沪上企服通7 小时前
历史账套科目重映射与规则版本重算:旧账梳理的“口径复位”工程
笔记·架构
zttbee8 小时前
git命令
git
gjf05_058 小时前
人该怎样活着呢?版本75.8
学习
li星野10 小时前
【学习记录】PCB与PCBA核心知识全解析:从设计到制造的关键细节
学习·制造
卿卿的产品经理日记10 小时前
【AI产品经理实战】Day 35|从“沉迷工具“到回归 AI 底层:Skill 收官、系统复盘与下一个 13 天
人工智能·学习·产品经理
一条泥憨鱼11 小时前
【从0开始学习计算机网络】| ARP 协议:地址解析,ARP 欺骗,链路层寻址
网络·后端·学习·计算机网络
HY小宝F11 小时前
树莓派智能摄像头系统 30 天重学计划之 Day 04 · HTTP / API:控制链入口 —— 学习总结
网络协议·学习·http
Go Work12 小时前
2026 Cadence SPB 24.1中文版安装图文详解(附安装包)
经验分享·笔记