Git使用指南(下)
9 初识分支
把每一次的提交,都用线连起来,你会发现,很连贯。
C/C++ 指针的概念
git reset --hard commitid
HEAD 如果说内容已经add到暂存区,此时要想撤销的话,需要先回到最新的一个commitid上 HEAD HEAD^ HEAD^^
HEAD就表示当前最新的版本的commitid,也就是最新的指针指向
Master分支是主分支,也是git为你默认创建的分支
一定就有其他分支
Master分支指向的是最新的提交commitid,头指向指向的是我们的master分支。
但是git的强大之处远不止如此,而是有一个多人协作开发的概念。
不仅是一个单人开发进行版本控制,同时可以多人协作开发进行一个版本控制。 就是通过git的分支进行的。
10 详解分支
在主分支master上切出一个开发分支,比如叫”dev_wang”
git checkout -b dev_wang; 创建一个分支
现在你所有的操作都是在一个新的分支上进行
刚才一系列的操作都是在dev_wang分支上进行了,现在再次切换到主分支
Git branch可以查看当前所有的分支情况,并且可以看到目前所处的分支(*)
在不同的分支上进行的版本管理,只有在自己的分支上才会生效。
HEAD的一个补充:HEAD头指针指向的是当前分支最新的commitid
假设我们觉得一个分支没啥用了,想要删除该分支怎么办呢?
现在所处的分支是dev_wang,想要删除它的话,你必须在其他分支上。
这时候你只能强制性的删除该分支
git branch -D dev_wang
11 分支合并和冲突解决
主分支master我们不会去动,只会用于版本的发布。
各自在自己的分支上开发完成之后,需要将开发的内容合并到主分支上去。这个时候成为merge。
需求:一个新的开发人员dev_zhang
(1)git checkout -b dev_zhang;
(2)进行文件的修改并且add,commit
(3)此时在小张的分支上多了一个commitid,这时候需要把这个小张修改的内容进行版本的发布,就需要把小张的修改内容合并到master分支上。
切换到master分支,合并dev_zhang的开发内容
合并的操作:快速合并 在master分支上,git merge dev_zhang;
(1)git branch -d dev_zhang; //上一个小节我们这样去做的时候,它有一个不能删除的提示,这个提示是告诉你需要进行分支的合并。
当你的项目开发人员很多,2个,小张,小李,合作开发一个项目
需求:小张,小李合作开发一个项目,这个项目两个人负责不同的模块
小张:商品管理的模块
小李:订单管理的模块
master分支作为一个版本发布的分支,不应该进行直接在上面开发
(1)git checkout -b dev_zhang
(2)git checkout -b dev_li
(3)分别在小张和小李的分支上进行开发之后
发现master分支上并没有小张小李的开发内容
(4)小张和小李的开发内容发布到master分支
分支的合并
合并的冲突的问题
需要手动解决冲突,并且再去进行add,commit的操作。
git checkout -b test
12 Git config和配置别名
在你刚装完git的时候,老师让你去配置了一个email name,只有这样你才能使用git
git config配置git的命令
git config -l 查看所有的配置信息
这里所有的信息实际上都是整合出来的,整合哪边的呢?
仓库级别,全局级别,系统级别
优先级是什么
所谓的仓库级别的配置:当前仓库级别下的.git>config文件
全局级别的:当前用户之下表示的是全局级别的
系统级别:在我们的git安装目录下etc
Git config --global --add user.name itcrazy2016
Git config --global --unset user.name
这个命令其实比较实用
Git status git add git commit
Git log --pretty=oneline
这些命令太长了,能不能简化?
Git st 表示查看用户状态
Git cm 提交commit
Git log one 查看一行信息?
配置别名?
git config --global alias.st status 表示用st代表status。
13 打标签和忽略文件
打标签:
Commitid不容易记住,能不能用一种比较独特的方式去记住每个版本
118.222.113.253 这样访问网站方便?
www.baidu.com 域名访问网站方便?
Commitid as2731aa <------> 标签
想要给最新版本的id打上一个标签 -----git tag v1 将最新版本的commitid对应上v1
查看一下当前仓库的标签列表 git tag
给之前已经错过的commitid去打上一个标签,怎么操作?
git tag v1pre d619d86
这个标签你看起来还是不够过瘾,你也可以给这个标签加上一个说明
Git tag v2.0 -m “这里打上了一个标签”
就得能够删除标签 git tag -d v1
忽略文件
创建了一个Person.class的类文件,发现git标注为Untracked file 未被追踪的文件
Git add Person.class 肯定是可以的
我希望这个文件不能被git管理起来
能不能让git将这个文件(这类文件)给忽略呢?
.class git你不要帮我去管理.class的类文件
仓库的根目录下创建一个.gitignore 文件
这个规则你要让git能够看懂
告诉git让他不要帮你去管理这个文件了
14 本地仓库和远程仓库
假设主分支master已经存在,这时候多了一个开发人员,你怎样给他一个分支?
每个人要至少在自己的电脑上进行开发?
而这个master分支仅仅用于版本的发布的。
用一台公共的电脑作为一个远程仓库,供每个开发者使用,每个开发者可以去创建各自独立的分支进行开发,开发完成之后,把各自的代码推到远程仓库上。
局域网:一台远程仓库 私有的公共仓库
项目:很小,想要让所有开发者都参与进来,那么就应该有这样一台公共的让所有人都能访问的远程仓库。同时这样做的好处是:可以更加方便的管理开源代码。 大家都一起使用的仓库。
很显然是存在,GitHub 国外的远程仓库 世界各地的开发者都可以在上面进行自己代码的管理
码云 国内的远程仓库
问题是,你把代码放到他们上面,除非你交一些会员费,代码才不能让别人看见,不然你提交到你账号上的代码都公开的。
搭建自己的私有仓库的话,让别人不可见,怎么做呢?Gitlab
15 GitHub和码云
Github 远程仓库
Gupaogit 本地仓库
把本地仓库gupaogit 上传到github上去进行。
(1)在远程仓库github创建一个对应的项目比如gupaogit repository仓库
16 操作远程和本地仓库
push,pull和clone。
代码的内容推送 ,将本地的内容推送到具体的远程仓库上
本地的gupaogit -----> github/码云 gupaogit
(1)要让两者有关联
在本地仓库中配置一下它和远程仓库的关系,它俩是一家人。
当前本地仓库是否有远程仓库,如果有,那么它的远程仓库是什么? git remote
本地仓库中:git remote add origin远程仓库的地址?git@github.com:itcrazy2016/gupaogit.git
origin 本地仓库和远程仓库的地址进行一个关联
git push -u origin master 是推送代码,那么就不是指定远程仓库。
这样关联之后,接下来就是把代码推送到远程仓库上
如果在上传本地代码到github仓库时,出现下面这个问题:
$ git remote add origin https://github.com/...*.github.miniSpring.git
fatal: remote origin already exists.
解决办法:
先移除
git remote rm origin
再次添加
git remote add origin https://github.com/.*.github.io.git
如果要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行 git remote add [shortname] [url]:
$ git remote
origin
$ git remote add pb git://github.com/paulboone/ticgit.git
$ git remote -v
origin git://github.com/schacon/ticgit.git
pb git://github.com/paulboone/ticgit.git现在可以用字串 pb 指代对应的仓库地址了.比如说,要抓取所有 Paul 有的,但本地仓库没有的信息,可以运行 git fetch pb:
$ git fetch pb
(2)本地仓库和远程仓库进行关联之后,就可以进行的推送了
git push -u origin master 将本地仓库的内容推送到远程仓库
无论是推送还是拉代码,需要有这样一个权限,也就是说你目前使用的这台电脑是否安全,如果不安全,人家不会让你去推送
【没有权限的情况下】
需要添加权限
- 需要在本地中生成一个ssh key
ssh-keygen -t rsa -C "itcrazy2016@163.com" 在自己的计算中中增加一个安全ssh key
盖上了一个章,就表示你这个电脑认证后的ssh_key
B.需要把这个key告诉github/码云
把公钥放到ssh key
保证数据传输的一个安全性
如果说是在其他分支进行的修改,需要进行一个分支的合并
要推送其他分支的,指定一下要推送的分支即可git push -u origin dev_zhang;
注意:
git操作是出现Username for 'https://github.com':的验证问题
Username for 'https://github.com': 输入的是github上的邮箱账号, 而不是github中设置的username, 这是个巨坑!!!
Password for 'https://你的github邮箱@github.com': 输入github的登录密码,点击enter键即可.
Git删除文件,再提交到远程github上
$ git rm -r --cached 目录名或文件名
$ git rm -r --cached test.txt 删除 test.txt文件
$ git commit -m '描述' 如果 git commit进行操作 会弹出框 输入 :qa确定,然后重新$ git commit -m '描述' 操作
$ git push -u origin master
新来了一个哥们,小王,需要进行一个开发
需要把远程仓库的代码拉倒本地进行开发
(1)clone 克隆操作
前提是:sshkey也要添加完成
Git clone git@github.com:itcrazy2016/gupaogit.git
当远程仓库的版本内容如果和本地仓库的内容不一致,需要先git pull,把远程仓库的内容拉下来到最新版本才行,然后进行手动解决冲突
Gitlab 视频 咕泡学院官网
http://bbs.gupaoedu.com/forum.php?mod=viewthread&tid=258&extra=page%3D1&_dsign=495dcb55
如果大家后期反馈有需要老师帮忙录制一个视频操作的话,后面再给大家补上这个视频
From Gupao
Git使用指南(下)的更多相关文章
- 【转】git - 简明指南
git - 简明指南 助你入门 git 的简明指南,木有高深内容 ;) 作者:罗杰·杜德勒 感谢:@tfnico, @fhd 和 Namics其他语言 english, deutsch, españo ...
- 发布系统Git使用指南 - the Git Way to Use Git
发布系统Git使用指南 --the Git Way to Use Git 背景 有文章曾归纳,Git是一套内容寻址文件系统,意思是,Git的核心是存储键值对^[1]^.显然,这样的形式不利于普通人 ...
- 如何加入别人的Git项目——Git Fork指南
如何加入别人的Git项目--Git Fork指南 首先,在网页打开别人Git上的项目,点击右上角的.下图因为Fork过了,所以灰了. 随即弹出如下窗口,当然选择确定. 于是,我们在在自己的项目列表可以 ...
- git——简易指南
Git对于我来说,只知道是一个版本控制器,类似于乌龟的svn.其中也仅仅会几个常的命令,比如说“更新git pull”.“提交git push”等等,因为记得当初使用的时候,师傅告诉我,对于你不懂这个 ...
- git - 简易指南
http://www.bootcss.com/p/git-guide/ git - 简易指南
- Git权威指南 读笔(2)
第七章 Git重置: Git提供了一个挽救机制,通过.git/logs目录下日志文件记录了分支的变更. master分支的日志文件.git/logs/refs/heads/master,显示最后5行: ...
- 什么是git?window下安装git
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
- git 在linux下服务端搭建
本文以centos为例,其他linux请自行参照对应方式. 1. 服务端安装git yum install git 2. 服务端添加无shell登录权限的用户,将username替换为要添加的用户 u ...
- Java程序员的Golang入门指南(下)
Java程序员的Golang入门指南(下) 4.高级特性 上面介绍的只是Golang的基本语法和特性,尽管像控制语句的条件不用圆括号.函数多返回值.switch-case默认break.函数闭包.集合 ...
随机推荐
- django 组件 自定义过滤器 自定义标签 静态文件配置
组件 将一些功能标签写在一个html文件里,这个文件作为一个组件,如果那个文件需要就直接拿过来使用即可: 这是title.html文件,写了一个导航栏,作为一个公用的组件 <div style= ...
- windows激活密钥
密钥来源,微软官方 KMS 客户端安装密钥 | Microsoft Docs Windows Server 2008 R2 操作系统版本 KMS 客户端安装程序密钥 Windows Server 20 ...
- WinForm中实现按Enter将光标移动到下一个文本框
首先窗体加载出来是上面这个样子.有五个文本框,我们要实现的功能就是输入姓名后按Enter,使光标直接定位到手机号中. 在页面加载的时候我们就要获取所有文本框控件,并添加回车事件 private voi ...
- 报错:java.lang.ClassNotFoundException: io.opentracing.util.GlobalTracer
报错:java.lang.ClassNotFoundException: io.opentracing.util.GlobalTracer 近来在做一个在线教育的项目,课程信息放在数据库,而视频放在阿 ...
- Spring Cloud 2020.0.1 正式发布!真是头疼。。。
上一篇:Spring Cloud 2020.0.0 正式发布,全新颠覆性版本! 号外!号外!号外! Spring Cloud 2020.0.0 在去年 12 月底,赶在一年的尾巴最后几天仓促发布了,时 ...
- Language Guide (proto3) | proto3 语言指南(九)Oneof结构
Oneof - Oneof结构 如果消息包含多个字段,并且最多只能同时设置一个字段,则可以使用oneof功能强制执行此行为并节省内存. oneof字段与常规字段类似,但oneof共享内存中的所有字段除 ...
- mysql 用户 登陆 权限相关
1. CREATE USER 'dog2'@'localhost' IDENTIFIED BY ''; 将"localhost"改为"%",表示在任何一台电脑上 ...
- DDD领域驱动设计:CQRS
1 前置阅读 在阅读本文章之前,你可以先阅读: DDD领域驱动设计是什么 DDD领域驱动设计:实体.值对象.聚合根 DDD领域驱动设计:仓储 MediatR一个优秀的.NET中介者框架 2 什么是CQ ...
- Redis挖矿原理及防范
笔者也曾经被挖矿病毒侵袭过,灰常难受,但是其实你只要了解入侵的手段就非常好防范了,今天我们就演示一下如果通过Redis进行提权获取远程服务器的Root用户. 1.首先我们需要一些先决条件 条件一:你首 ...
- Java之jdk环境变量配置
1.jdk下载(按平时下载,注意一下路径就行)2.配置环境变量 :JAVA_HOME.Path.ClassPath3.检查是否成功:(查一下版本,可省略).运行环境(java.javac) 2:电脑- ...