git分支相关的命令
Git 分支管理及结合gitlab的使用
- 说明
有关gitlab的说明及基本操作,请参考:https://blog.51cto.com/wutengfei/2090253
使用git分支的作用,我们先来说一个简单的案例吧,你们团队中有多个人在开发一项目,一同事在开发一个新的功能,需要一周时间完成,他写了其中的30%还没有写完,如果他提交了这个版本,那么团队中的其它人就不能继续开发了。但是等到他全部写完再全部提交,大家又看不到他的开发进度,也不能继续干活,这如何是好呢?
对于上面的这个问题,我们就可以用分支管理的办法来解决,一同事开发新功能他可以创建一个属于他自己的分支,其它同事暂时看不到,继续在开发分支(一般都有多个分支)上干活,他在自己的分支上干活,等他全部开发完成,再一次性的合并到开发分支上,这样我们既可知道他的开发进度,又不影响大家干活,是不是很方便呢?
在这里说明下:svn也可以实现上面所说的功能,但Git呢,无论你创建还是切换或者删除都很快哦! - 分支的本质
分支本质上其实就是一个指向某次提交的可变指针。Git 的默认分支名字为 master 。而我们是怎么知道当前处于哪个分支当中呢?答案就是在于 HEAD 这个十分特殊的指针,它专门用于指向于本地分支中的当前分支。我们可以简单理解为:commit <- branch <- HEAD (注,简单的说HEAD就是指向于本地分支中的当前分支) ,如图所示:
说明:上图中的dev指的是git的一个分支。 - 创建分支
当我们需要调试某个Bug或者尝试添加或修改程序中的某个模块,而又不能影响主分支的开发时。就可以通过创建分支来满足需求。创建分支相当于是创建一个新的分支指针指向当前所在的提交。我们在Commit3上创建dev分支:##创建dev分支前,我们先查看下当前分支情况
git branch -a
\* master
remotes/origin/master
##创建dev分支
git branch dev
##查看当前分支
git branch -a
dev
\* master
remotes/origin/master - 切换分支
从上面操作可知,虽然我们创建了一个新分支,但是 HEAD 仍然指向 master 。如果希望在创建分支的同时切换到新分支上,我们可以通过以下命令实现:git checkout dev
Switched to branch 'dev'
git branch -a
\* dev
master
remotes/origin/master
##说明:git checkout命令加上-b参数表示创建并切换分支上。git branch -a 命令可以查看所有分支,现在我们HEAD指针便指向dev分支,大家可以在上图中看到dev分支上有个*号。如下图所示:

- 分支文件提交
##我们现在在dev分支上
echo "this is a test" > shiyan.txt
git add shiyan.txt
git commit -m "add a file shiyan"
[dev 0e7aa94] add a file shiyan
1 file changed, 1 insertion(+)
git push
fatal: The current branch dev has no upstream branch.
To push the current branch and set the remote as upstream, use:git push --set-upstream origin dev
git push --set-upstream origin dev用流程图演示上述过程如下:

现在我们在dev分支上完成工作。##查看下dev分支上的文件
ls
shiyan.txt
##切换到master分支
git checkout master
##查看master分支上的文件
ls
##并没有shiyan.txt这个文件,我们登入到gitlab上看一下,在dev分支上存在shiyan.txt这个文件。
##原因:因为那个提交是在dev分支上,而master分支没有变化。 - 合并分支(快速合并)
现在,我们把dev分支的工作成果合并到master分支上,操作如下:##在master分支上进行操作
git checkout master
git merge dev
Updating 602d921..f6f8543
Fast-forward
shiyan.txt | 1 +
1 files changed, 1 insertion(+)
create mode 100644 shiyan.txt
##git merge 命令用于合并指定分支到当前分支。合并后,再查看shiyan.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。
ls
shiyan.txt
##说明:
(1)上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。当然,也不是每次合并都能Fast-forward,我们后面会将其他方式的合并。合并完成后,就可以放心地删除dev分支了。
(2)在gitlab上可以看到master分支里已经存在shiyan.txt。 - 删除分支
##在master分支上进行操作
git checkout master
git branch -d dev
Deleted branch dev (was f6f8543).
##查看当前分支情况
git branch -a
\* master
remotes/origin/dev
remotes/origin/master - 命令总结
##查看分支
git branch -a
##创建分支
git branch name
##切换分支
git checkout name
##创建并切换
git checkout -b name
##合并某分支到当前分支
git merge name
##删除分支
git branch -d name
git分支相关的命令的更多相关文章
- Git -- 分支与合并 (命令行+可视化工具p4merge)
基本命令 把所有的变化都放在master分支并不是最好的做法. 建议的做法是把变化放在分支里面. 至少应该准备一个feature分支之类的, 把变化都隔离开来, 然后等到所有的功能都稳定之后再合并到m ...
- GIT分支操作常用命令
切换分支:git checkout name 撤销修改:git checkout -- file 删除文件:git rm file 查看状态:git status 添加记录:git add file ...
- git分支更新代码命令
第一步: 查看状态 git status 第二步: 全部添加 git add --all 第三步: 再次查看状态 git status 第四步: 提交 git commit -m '备 ...
- git 分支相关操作
git status 查看当前工作区 会显示分支 如下 D:\工程\vue_study\testplat_vue>git statusOn branch masternothing to co ...
- Git 分支相关
创建分支 git branch dev 切换分支 git checkout dev (dev换成-可切换为上一个使用的分支) 以上两个可合并为 git checkout -b dev 将新分支推送到远 ...
- Git分支及其协同开发
目录 Git分支 Git是如何保存数据的 Git分支的本质 Git分支的操作 远程仓库与本地仓库分支开发 一个项目多个远程仓库 远程仓库操作命令 协同开发 Git flow工作流 GitLub安装搭建 ...
- 02: git分支管理
目录:GIT其他篇 01: git & github 02: git分支管理 目录: 1.1 Git常用命令 1.2 主要分支(保护分支) 1.3 特性分支:feature (开发分支合并到d ...
- Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作
上篇博客聊了<Git知识总览(三) 分支的创建.删除.切换.合并以及冲突解决>,本篇博客我们主要来看一下 rebase 变基相关的操作.rebase 操作和 merge 操作最终都可以达到 ...
- 尚硅谷面试第一季-13git分支相关命令
课堂重点:分支相关命令 实际应用-工作流程 实操命令及运行结果: 创建master分支并提交 git init git add . git commit -m "V1.0" git ...
随机推荐
- JWT黑名单和白名单
单点登录系统 单点登录系统保存了用户的登录名和密码,上网用户在单点登录系统中认证成功后,就可以直接登录各个业务系统. 1. 用户使用单点登录系统的登录界面,输入用户名和密码登录成功后, 单点登录系统为 ...
- lmir 随笔
近期需要研究一些特征工程的工作,就打算把微软之前公布出来的特征都复现一遍,今天遇到的特征是 LMIR, 其实也就是language model for information retrieval的简写 ...
- 我的Vue朝圣之路1
1. Vue是什么? 1). 一位华裔前Google工程师开发的前端js库 2). 一个MVVM框架 3). 核心概念 * 数据绑定 ...
- iOS - 第三方库总结篇
Swift版本点击这里 欢迎加入QQ群交流: 594119878 About A curated list of iOS objective-C ecosystem. How to Use Simpl ...
- 【转载】 C#使用string.IsNullOrWhiteSpace方法判断字符串是否为非空字符
在C#编程过程中,很多时候需要判断传入过来的字符串是否为Null或者空字符或者空白字符,此时就可以使用到string.IsNullOrWhiteSpace方法来判断,如果字符串为null或者空字符Em ...
- 【转载】Sqlserver在创建表的时候如何定义自增量Id
在Sqlserver创建表的过程中,有时候需要为表指定一个自增量Id,其实Sqlserver和Mysql等数据库都支持设置自增量Id字段,允许设置自增量Id的标识种子和标识自增量,标识种子代表初始自增 ...
- 从汇编语言写到c语言
好了,言归正传,裸机程序没有操作系统的支持,想要用c语言,就只能先使用汇编语言手动配置c语言需要的环境,听起来很高大上,其实需要做的很简单:指定堆栈指针的值就好. 那么完成这个简单的事情之前,先要明白 ...
- php验证码案例
<?php header('Content-type:image/jpeg'); $img=imagecreatetruecolor(120,40); // 背景颜色 $bg_color=ima ...
- 微信小程序 wxml 中使用 js函数
原文链接 1.在 utils 目录下 新建`filter.wxs` var filters = { toFix: function (value) { return value.toFixed(2) ...
- Kubernetes 1.15部署日记-使用kubeadm--<7-8>
7. 在k8s集群中run一个应用 nginx已经跑起来了到此kubernetes集群部署结束了. 8. 总结 此次部署kubernetes的起因是AI团队中的kubernetes项目跑在其他IP段网 ...