开发工具篇:Git和Github

开发工具篇:Git和Github

Git是什么?linux

Git是目前世界上最早进的分布式版本控制系统。工做原理 / 流程:git

  • Workspace:工做区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库 (通常公司内网选择GitLab,外网能够选择GitHub或者码云)

若是没有Git!github

  1. 不能多人并行修改服务器的同一个文件。
  2. 不能对文件的每一次提交的历史记录进行查阅,回退。
  3. 不能对团队中的人进行权限控制
  4. 不能使用分支去进行多线做战

SVN与Git的最主要的区别?chrome

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是本身的电脑,因此首先要从中央服务器那里获得最新的版本,而后干活,干完后,须要把本身作完的活推送到中央服务器。集中式版本控制系统是必须联网才能工做,若是在局域网还能够,带宽够大,速度够快,若是在互联网下,若是网速慢的话,就纳闷了。最主要的问题是,若是服务器挂了,那么子节点上的内容只是当前状态,这种单点故障,想恢复之前的内容就很难了。shell

Git是分布式版本控制系统,那么它就没有中央服务器的,每一个人的电脑就是一个完整的版本库,这样,工做的时候就不须要联网了,由于版本都是在本身的电脑上。既然每一个人的电脑都有一个完整的版本库,那多我的如何协做呢?好比说本身在电脑上改了文件A,其余人也在电脑上改了文件A,这时,大家两之间只需把各自的修改推送给对方,就能够互相看到对方的修改了。并且每一个人的机器就是一整套版本库,能够直接去恢复服务器的故障。centos

1 下载安装

https://git-scm.com/服务器

1.1 window傻瓜安装

安装完成后能够在开始菜单或者鼠标右键中看见Git logo,点击Git Bash会出现命令窗口,则说明成功。ssh

1.2 linux(Centos)傻瓜安装

yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum -y install git-core

2 基本使用篇

2.1 自报家门(全局标识)

由于Git是分布式版本控制系统,因此须要填写用户名和邮箱做为一个标识。curl

注意:git config --global 参数,有了这个参数,表示你这台机器上全部的Git仓库都会使用这个配置。固然你也能够对某个仓库指定的不一样的用户名和邮箱。(针对某个项目不带--global参数)分布式

git config --global user.name Heaton
git config --global user.email tzy70416450@163.com
#查询当前配置信息
git config --list
#经过文件查看全局配置信息
cat ~/.gitconfig

2.2 初始化版本库与局部标识

什么是版本库?版本库又名仓库,英文名repository,你能够简单的理解一个目录,这个目录里面的全部文件均可以被Git管理起来,每一个文件的修改,删除,Git都能跟踪,以便任什么时候刻均可以追踪历史,或者在未来某个时刻还能够将文件”还原”。简单的理解,就是让咱们的项目交给Git大管家来帮咱们管理,须要让Git知道是哪一个项目。

  1. 建立一个版本库也很是简单,选择一个文件夹目录,例如:D:\testgit。
  2. 经过命令 git init 把这个目录变成git能够管理的仓库。
  3. 这时候你当前testgit目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,不然,会把git仓库给破坏了。

而咱们的标识信息就在config文件下。

没有局部标识就会使用全局标识,通常状况下(推荐),使用全局标识就行了。

局部标识优先级大于全局标识。

cat .git/config
git config user.name Heaton_1
git config user.email tzy70416450@163.com_1

2.3 基础操做

2.3.1 工做区->暂存区->本地库基础操做

  • 使用git restore撤销工做区修改

  • 使用git add而后使用git commit将文件添加到本地库

  • 使用git commit -a 将文件添加到本地库

2.3.2 日志分析

2.3.3 版本跳跃

  • 使用git reset --hard 版本号,跳跃到该版本

  • 使用git reset --hard HEAD^ ,跳跃到以前的版本 (^一个就是一个版本,^^两个就是两个版本)
  • 使用git reset --hard HEAD~1 ,跳跃到以前的版本 (数字就是要回退的版本数)
  • 以上两个命令只能后退版本号

  • --soft --mixed -- hard 参数对比
    • --soft (软回退)仅仅在本地库移动HEAD指针
    • --mixed (混合回退)在本地库移动HEAD指针,重置暂存区
    • --hard (硬回退)在本地库移动HEAD指针,重置暂存区,重置工做区

2.3.4 删除文件找回

2.3.5 比较文件改动

3 分支使用篇:多人协做

3.1 分支操做流程

在实际开发中,咱们经常会有不少开发分支,每一个小伙伴在本身的开发分支上作完了事情,就会将代码提交到测试分支上面,由测试同窗去测试,修改问题后会将代码合并到主分支上发布。

固然有些公司还会有预发布分支,修改bug分支,原理是同样的,根据规范和喜爱来咯。

3.2 分支操做

  • 查看分支:git branch -v
  • 建立分支:git branch [分支名]
  • 切换分支:git checkout [分支名]
  • 合并分支:git merge [分支名]

3.2.1基础分支操做

3.2.2没有冲突的合并操做

3.2.3有冲突的合并操做

4 远程仓库操做

https://github.com/

github是其中一种远程仓库,注册帐号,建立仓库就可使用了。

还有码云,gitlab等等远程仓库产品。

4.1 建立

image-20200201190311591

4.2 保存远程仓库地址

  • git remote -v 查看远程仓库
  • git remote add [远程仓库别名] [远程仓库地址]

4.3 推送远程仓库

  • git push [远程仓库地址] [分支名]

4.4克隆

  • git clone [远程仓库地址]

4.5 ssh免密操做

  • 建立SSH Key。在用户主目录下,看看有没有.ssh目录,若是有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,若是有的话,直接跳过此以下命令,若是没有的话,打开命令行,
    输入以下命令(三次回车):
    • ssh-keygen

  • 登陆github,用户头像下打开” settings”中的SSH Keys页面,而后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴id_rsa.pub文件的内容。

4.6 邀请其余开发者

4.7 拉取操做

  • git fetch [远程库地址] [分支名]
  • git merge [分支名]
  • git pull -->(git fetch 和 git merge 两步操做)

4.7.1 用户1修改文件推送到远程库

4.7.2 用户2拉取远程库改动(2步)

4.7.3 用户2拉取远程库改动(1步)

重复4.7.1操做

4.8 多人协做冲突解决

用户1改变文件

用户2改变文件

修改冲突的文件

4.9 远程协做

若是未加入团队,不是开发者,想提交一些代码怎么办呢。github有远程协做功能。

  • 使用另外一个帐户,访问项目地址,Fork,克隆一个项目下来

  • 修改文件内容,提交远程仓库

  • pull request

  • 主帐号登录在pull request中就能够看见该次请求了,审核代码,发现主库被修改了。

5 idea中操做git

  • 添加帐号密码->添加修改提交推送(全部的git操做均可以在idea中进行哦)

6 github插件

chrome --> Octotree

idea --> ignore

相关文章
相关标签/搜索