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   将本地仓库的内容推送到远程仓库

无论是推送还是拉代码,需要有这样一个权限,也就是说你目前使用的这台电脑是否安全,如果不安全,人家不会让你去推送

【没有权限的情况下】

需要添加权限

  1. 需要在本地中生成一个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使用指南(下)的更多相关文章

  1. 【转】git - 简明指南

    git - 简明指南 助你入门 git 的简明指南,木有高深内容 ;) 作者:罗杰·杜德勒 感谢:@tfnico, @fhd 和 Namics其他语言 english, deutsch, españo ...

  2. 发布系统Git使用指南 - the Git Way to Use Git

    发布系统Git使用指南 --the Git Way to Use Git 背景 ​ 有文章曾归纳,Git是一套内容寻址文件系统,意思是,Git的核心是存储键值对^[1]^.显然,这样的形式不利于普通人 ...

  3. 如何加入别人的Git项目——Git Fork指南

    如何加入别人的Git项目--Git Fork指南 首先,在网页打开别人Git上的项目,点击右上角的.下图因为Fork过了,所以灰了. 随即弹出如下窗口,当然选择确定. 于是,我们在在自己的项目列表可以 ...

  4. git——简易指南

    Git对于我来说,只知道是一个版本控制器,类似于乌龟的svn.其中也仅仅会几个常的命令,比如说“更新git pull”.“提交git push”等等,因为记得当初使用的时候,师傅告诉我,对于你不懂这个 ...

  5. git - 简易指南

    http://www.bootcss.com/p/git-guide/ git - 简易指南

  6. Git权威指南 读笔(2)

    第七章 Git重置: Git提供了一个挽救机制,通过.git/logs目录下日志文件记录了分支的变更. master分支的日志文件.git/logs/refs/heads/master,显示最后5行: ...

  7. 什么是git?window下安装git

    一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...

  8. git 在linux下服务端搭建

    本文以centos为例,其他linux请自行参照对应方式. 1. 服务端安装git yum install git 2. 服务端添加无shell登录权限的用户,将username替换为要添加的用户 u ...

  9. Java程序员的Golang入门指南(下)

    Java程序员的Golang入门指南(下) 4.高级特性 上面介绍的只是Golang的基本语法和特性,尽管像控制语句的条件不用圆括号.函数多返回值.switch-case默认break.函数闭包.集合 ...

随机推荐

  1. [Ceoi2004]Journey

    题目描述 给出N个点,及你的出发点K. 接下来N-1行描述有关边的开始点,结束点,边长.保证图中不会有环 接下来给出数字J,代表你要走多少个点. 接下来J个数字,代表你要走过的点的编号.当然你可以自己 ...

  2. MySQL 5.6.35 索引优化导致的死锁案例解析

    一.背景 随着公司业务的发展,商品库存从商品中心独立出来成为一个独立的系统,承接主站商品库存校验.订单库存扣减.售后库存释放等业务.在上线之前我们对于核心接口进行了压测,压测过程中出现了 MySQL ...

  3. Soul API 网关源码解析 03

    目标 使用 soul 代理 dubbo 服务 dubbo 服务如何注册到网关的? dubbo 插件是如何工作的? 理清 http --> 网关--> dubbo provider 整条链路 ...

  4. ETL优化(转载)

    1.引言 数据仓库建设中的ETL(Extract, Transform, Load)是数据抽取.转换和装载到模型的过程,整个过程基本是通过控制用SQL语句编写的存储过程和函数的方式来实现对数据的直接操 ...

  5. AWS Lightsail 开启 Root 登陆权限

    将下面代码中的第一句中的 Passwd 改为自己将要设置的密码,否则默认 root 密码为 Passwd. #!/bin/bash echo root:Passwd |sudo chpasswd ro ...

  6. MySQL 高性能优化规范建议

    数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名 ...

  7. 提高 Kafka 吞吐量

    提高 Kafka 吞吐量 1.了解分区的数据速率,以确保提供合适的数据保存空间 2.除非您有其他架构上的需要,否则在写 Topic 时请使用随机分区 3.如果 Consumers 运行的是比 Kafk ...

  8. 报表生成工具ireport

    最近又开始学习新的玩意儿了,扒拉扒拉网上的资源,先捣鼓个思维导图.

  9. UI自动化实战进阶PO设计模式

    前言 经过前面的实战我们已经编写了几个测试用例,下面我们要用PO设计模式来调整我们的代码,让页面元素和测试业务进行分离,这样看起来直观而且后期的维护也方便. python有一个第三方的PO设计的库,既 ...

  10. Flink-v1.12官方网站翻译-P024-Checkpointing

    检查点 Flink中的每一个函数和操作符都可以是有状态的(详情请看使用状态).有状态的函数在单个元素/事件的处理过程中存储数据,使得状态成为任何类型的更复杂操作的关键构建模块. 为了使状态具有容错性, ...