Git命令之分支详解

1.1 概述

Git 中提交时,会保存一个 commit 对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关的附属信息,包含零个或者多个指向该提交对象的父对象指针;首次提交时没有直接祖先的,普通提交有一个祖先,由两个或者多个分支合并产生的提交则有多个祖先。

1.1.1 示例

在工作目录中有三个文件,准备将他们暂存后提交。暂存操作会对每一个文件计算校验和(SHA-1哈希串),然后把当前版本的文件快照保存在 Git 仓库中(Git使用blob类型的对象存储这些快照), 并将校验和加入暂存区域。 当使用 git commit 新建一个提交对象前,Git 会先计算每一个子目录的校验和吗,然后在 Git 仓库中将这些目录保存为树(对象);之后 Git 创建的提交对象,除了包含提交信息外,还包含了指向整个树对象的指针。这样将来需要的时候,重现此次快照的内容了。

$ git add text1.md text2.md tesxt3.md
$ git commit -m "init desc"

现在仓库中有了五个对象:三个文件表示快照内容 blob 对象;一个记录这目录树内容和其中各个文件对应 blob 对象索引的 tree 对象;还有就是一个包含指向 tree 对象的索引和其他提交信息源数据的 commit 对象。

修改后再次提交,这次提交的对象会包含上一个指向上次提交对象的指针。两次提交后变成下面这样。

Git 中的分支,其实本质上仅仅是个指向 commit 对象的可变指针。Git 会将 master 作为分支的默认名字。若干次提交以后,其实已经有一个指向最后一次提交对象的 master 分支,他在每次提交的时候都会向前移动。

1.1.2 创建分支

使用命令 git branch 创建分支

$ git branch testing

Git 保存着一个名为 HEAD 的特别的指针。在 Git 中他是一个指向你正在工作中的本地分支的指针。运行 git branch 命令,仅仅是建立了一个新的分支,但是不会自动切换到这个新建的分支中。

1.1.3 切换分支

使用命令 git checkout 切换分支:

$ git checkout testing

1.2 新建和合并

使用命令创建并切换分支

$ git checkout -b <分支名称>

合并分支,将开发分支合并到 master 主分支中

$ git checkout master
$ git merge <开发分支>

删除分支

$ git branch -d <分支名称>

解决冲突, ======= 隔开的上半部分,是 HEAD(即 master 分支,在运行 merge 命令时所切换到的分支)中的内容。下半部分是在开发分支的内容。

<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
please contact us at support@github.com
</div>
>>>>>>> iss53:index.html

1.3 管理分支

列出所有的分支

$ git branch

列出各个分支最后一个提交对象的信息

$ git branch -v

1.4 远程分支

远程分支是对远程仓库中分支的索引。通过 git fetch origin 来同步远程服务器上的数据到本地。

推送本地的开发分支到远程

$ git push origin <开发分支名>

删除远程分支

$ git push origin :<开发分支名>

1.5 分支的扩展

git rebase ing

到此这篇关于Git命令之分支详解的文章就介绍到这了,更多相关Git命令内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2021-02-28

git的远程分支的作用和本地分支有什么区别

不知道大家有没有经历过,当我们切换到了一个新的分支想要提交代码的时候,总会遇到这样的错误. 我们把日志里的英文翻译过来是说,我们  当前的分支没有设置任何上游分支.然后git提示我们可以运行下面这行代码来设置远程的上游,这样我们就可以push成功了. 当然如果我们push的时候执行的不是git push,而是后面再加上origin的话,就可以push成功了.比如这样: 那么这是什么原因呢?这个origin分支又是什么意思呢?我们今天就来讨论一下这个问题. 远程分支 远程分支其实就是远程代码仓库当

git push 本地项目推送到远程分支的方法(git命令版)

1.在本地建立项目  可使用Eclipse,Idea等开发工具创建项目 打开根目录到所在在工程名的下一级 2.使用git 客户端 进入到上图目录HelloWord的文件夹里面 3.初始化项目 git init 4.HelloWord工程结构的添加 命令 git add -A 5.提交git到版本 -m是提交的注释 git commit -m "这是注释:初始化项目" 6.远程git建立好项目 7.配置远程仓库  origin是远程仓库的别名 代替xxx.git的地址 git remot

git 将本地文件(夹)上传到gitee指定分支的处理方法

gitee的指定分支 想上传的本地文件夹为C#learning 下面为使用git将这个C#learning上传到项目的example的方法 1.在forup这个文件夹的空白处:鼠标右键 然后选择 Git Bash Here 2.本地仓库初始化,会在此处生成.vs隐藏文件夹 git init 3.其中http://xxxxx.git指gitee处的http(注意结尾有.git) git remote add origin http://xxxxx.git 4.远程仓库与本地仓库同步 其中examp

详解Git合并分支的流程步骤

正常合并分支dev到master流程: (合并到其他分支类似哈) 1.要合并的dev分支先更新提交所有文件 注意: 如果不需要提交的本地化修改文件的话,最好不要提交上去.临时备份然后删掉或者撤回. 进入项目根目录,然后执行: git add . git commit -m '提交所有dev分支的文件' git push -u origin dev 2.切换到master分支 git checkout master 3.更新master代码到最新 git pull origin master 4.

idea手动刷新git分支的详细教程

idea手动刷新git分支 相信很多小伙伴都遇到过这样的问题,在git上新建的分支却在idea的git分支中找不到又不知在哪里刷新,博主最近也刚好碰到这个问题就分享出来,避免大家因此浪费过多时间!我这里idea版本是2019.1.3,版本不一样入口也有可能不一样,望周知! 首先新建一个分支 然后发现找不到刚建的req_5357115分支,也就无法checkout,接着往下来 依次点击:vcs->git->pull 点击旁边红框里的刷新按钮 当然此时这里是没有req_5357115这一分支的 显

linux上搭建私有Git服务器的详细教程

1.服务器搭建 远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改.GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用. 搭建Git服务器需要准备一台运行Linux的机器,在此我们使用CentOS.以下为安装步骤: 1.下载git-2.22.0.tar.gz https://Github.com/Git/Git/archive/v2.2

将Git存储库克隆到本地IntelliJ IDEA项目中的详细教程

IntelliJ IDEA是Java语言开发的集成环境,IntelliJ在业界被公认为优秀的Java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持.Ant.JUnit.CVS整合.代码审查. 创新的GUI设计等方面的功能可以说是超常的. 点击下载IntelliJ IDEA最新试用版 将GitHub存储库克隆到我们的本地计算机 有几种方法可以将Git存储库克隆到本地计算机.您可以使用HTTPS或SSH等选项.我们将使用的是HTTPS,因为它可能是最简单的选择.当我们单击剪贴板图

idea切换git地址并刷新右下角git分支

1  点击VCS-Git-Remotes... 2 点击Edit修改输入新地址即可,name可以自己写 3 修改成功以后,点击VCS-Git-fetch,刷新远程修改到本地,此时点击右下角git分支树,就是最新的分支树了 IDEA git修改远程仓库地址的三种方法 1.修改命令 git remote set-url origin <url> 2.先删除后添加 git remote rm origin git remote add origin [url] 例如: 方法3.直接修改config文

搭建一个开源项目两种方式安装git的详细教程

一.开始工具的安装 1.git 安装git工具有两种方式,一种就是利用自带包管理工具,一种是源码编译安装 (1)由于CentOS已经具有包管理器因此只需要一行命令即可自动安装 yum install git (2)自行下载git安装包,进行安装首先下载tar包,然后移动到root目录中 从图中可见移动的轨迹,下面使用解压命令解压,得到目录git-2.28.0 tar -zxvf 复习tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件. 参数: -z或--gzip或--un

IntelliJ IDEA 中git的使用图文教程

项目管理离不开版本控制,目前主流版本控制工具大概就是SVN和Git,至于两者有啥区别这里就不详细介绍了,如果有不明白的可以上网查资料,后期如果有机会我再开篇栏目细说,而且现在市场上Git的使用率已经远远高于SVN.我们在用IDEA开发项目的时候如何熟练使用Git来控制代码版本呢? 一.安装Git 使用Git当然需要先安装Git,安装过程就不详细说明了,按装好之后,打开IDEA进入设置界面(可以直接点击工具栏上的,也可以通过快捷键Ctrl + Alt + S),搜索git,界面如下: 我们可以看到

如何快速搭建一个自己的服务器的详细教程(java环境)

一.   服务器的购买 1. 我选择的是阿里云的服务器,学生价9.5元一个月,百度直接搜索阿里云,然后点击右上角登录,推荐大家用支付宝扫码登录,方便快捷.阿里云官网的东西比较多,登录后我找了很久也没有找到学生服务器在哪里卖,最后在咨询里找到了这个网址,https://promotion.aliyun.com/ntms/campus2017.html,购买的时候需要进行学生认证,按照他的要求一步步来就好,认证大概需要几个小时.如果你不是学生那就直接购买ecs服务器就好,首页就可以看到ecs服务器的

mysql 5.7.14 下载安装、配置与使用详细教程

 下载 a.我这里用的是 ZIP Archive版的,win8 64位的机器都支持 这个所以我建议都用这个.还有这个比较简单而且还很干净.地址见图.拖到最下面,看清楚了64bit ZIP Archive,点击Download. b.点开之后会进入另一个页面,但却没有下载,这个时候不用怕,看不懂也没关系,他的意思就是让你登录(login),或者注册个账号(sign up)就行了,登录或者注册成功后就开始下载了.(记住密码要字母和数字组合,并且要大小写混合) c.当然如果你有的话也可以直接登录. 成

Android Studio安装配置、环境搭建详细步骤及基本使用的详细教程

前言 Android Studio的安装配置及使用篇终于来啦~ 废话不多说,以下针对JDK正确安装(及其环境变量配置完毕,即Java开发环境下).Android Studio的安装,配置,以及创建工程.主题字体更换.窗口工具.布局.快捷方式等的基本使用逐一说明. 安装java 下载Java安装包(jdk,网上有很多下载地址,最好去官网下:https://www.java.com/zh_CN/),安装完后记得配置环境变量: 在"系统变量"新建一个变量名为JAVA_HOME的变量,变量值为

成功安装vscode中go的相关插件(详细教程)

让你成功安装vscode中go的相关插件 注意:该演示环境是windows环境,linux和mac环境操作思路一样 vscode中有很多go的相关插件,非常好用如下: gocode gopkgs go-outline go-symbols guru gorename gomodifytags goplay impl godef goreturns golint gotests dlv 但是由于各种原因,这些插件无法安装,甚至你翻墙之后发现也还是无法安装,加上最近翻墙被限制的这么严格,所以总结了如