github~

总结

*   学会使用基本的git命令 管理源代码

*   学会去github创建仓库 并将代码上传到github的仓库 (有待完成 回家有网再push)

*   了解本地的.git和服务器github的.git的关系 是两个仓库 一个是本地 一个是服务器 需要使用一句命令来关联 git remote add origin
 远端的.git的地址

*   了解github的概念以及github和git的关系

*   学会把本地代码提交到github仓库

*   了解ssh无密码提交方式

## 1. git 的介绍

1.  什么是git: 是一个开源分布式的版本控制系统(版本控制工具) 用来管理我们项目源代码的版本的 
 版本: 是一个项目(软件)更新的一个记录编号 (项目每次更新就会产生一个版本(每一个版本的源代码都不一样))  
1. 游戏 更新 每次更新都会有版本号  2\. App 软件更新
 3. 框架更新 jquery mui bootstrap  
4. 版本的编号通常是一个数字  1.  1.1 1.2 1.3 1.3.1 1.3.2 2.  3.  大更新 就改变 大编号 (版本号) 小更新就改变小的编号 (补丁)

2.  为什么要使用版本管理系统:

    1.  因为软件经常要更新 每更新一次就要出一个新的版本

    2.  新版和老版本代码是不一样的 需要管理每个版本的源代码

    3.  每个版本的代码都需要保留和备份 如果使用文件夹的方式保存代码版本很不方便

    4.  现在都是使用工具来管理代码

3.  有哪些源代码管理(系统)工具:  svn 是一个开放源代码的版本控制系统 操作简单 但是需要联网开发 
不适合开源项目 git 是一个开源的代码版本控制系统 操作复杂 离线开发 适合开源项目  vss 最早的 微软出来的管理工具 
针对windows电脑不开源 使用文件共享方式来管理 安全性低

4.  版本管理原理

    1.  svn 集中式: 集中在一台电脑管理代码版本 别人只要把代码提交给管理源代码的电脑上

    2.  git 分布式的: 分布在每个人电脑上管理每个人的版本 我可以把我的代码提交都服务器 你可以吧代码提交到服务器 服务器 只是做了代码共享 
(各自在本地管理各自的代码的版本)

5.  git和svn对比 [https://www.cnblogs.com/mtl-key/p/6902666.html](https://www.cnblogs.com/mtl-key/p/6902666.html)

 <pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n41" 
 mdtype="fences"
 style="
 box-sizing: border-box; 
 overflow: visible; 
 font-family: var(--monospace); 
 font-size: 0.9em; 
 display: block;
 break-inside: avoid;
 text-align: left;
 white-space: normal;
 background-image: inherit;
 background-position: inherit;
 background-size: inherit; 
 background-repeat: inherit;
 background-attachment: inherit;
 background-origin: inherit;
 background-clip: inherit; 
 background-color: rgb(248, 248, 248); 
 position: relative !important;
 border: 1px solid rgb(231, 234, 237);
 border-radius: 3px;
 padding: 8px 4px 6px;
 margin-bottom: 15px; 
margin-top: 15px; width: inherit;">

 SVN与Git优缺点比较
     1.SVN优缺点
     优点: 
     1、 管理方便,逻辑明确,符合一般人思维习惯。 
     2、 易于管理,集中式服务器更能保证安全性。 
     3、 代码一致性非常高。 
     4、 适合开发人数不多的项目开发。 
     缺点: 
     1、 服务器压力太大,数据库容量暴增。 
     2、 如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器不能连接上,
就不能提交,还原,对比等等。 
     3、 不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。
但是一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分
层管理,从而很好的解决开发人数众多的问题。
     2.Git优缺点
     优点: 
     1、适合分布式开发,强调个体。 
     2、公共服务器压力和数据量都不会太大。 
     3、速度快、灵活。 
     4、任意两个开发者之间可以很容易的解决冲突。 
     5、离线工作。 
     缺点: 
     1、学习周期相对而言比较长。 
     2、不符合常规思维。 
     3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。</pre>

6.  git和github的关系  git是一个工具用来管理本地代码版本的  github是一个服务器是用来共享代码的服务器

## **2. git基本使用**

## 1. 安装环境 安装git工具软件

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" contenteditable="true" cid="n47" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">

找到git软件  [https://www.cnblogs.com/maojunyi/p/7735723.html](https://www.cnblogs.com/maojunyi/p/7735723.html)
  Git-2.13.0-64-bit.exe 
双击打开一路下一步安装
如果安装完成后 在桌面上右键 有git bash here就表示安装成功</pre>

### 2. 了解git的使用流程 怎么管理源代码

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" contenteditable="true" cid="n49" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">


理解git工作流程
工作区  源代码项目(文件夹)
暂存区  临时管理源代码(文件夹)  (暂存区的代码 代码的版本还没有完成 先临时放到暂存区里面 等到整个版本的代码都写完 再统一把暂存区的代码提交到本地版本库)
本地仓库  本地源代码版本的仓库(文件夹) (里面记录了项目的每一个版本 对版本进行操作)
远程仓库  服务器源代码版本库(文件夹) (用来实现代码仓库共享的远程一个服务器仓库)</pre>

## 3. git的使用步骤(git的基本命令的使用) 所有的命令都是在当前项目的git黑窗里面执行 git bash here

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" contenteditable="true" cid="n52" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">

1. 在项目中初始化一个本地仓库 git init
2. 把项目需要管理的代码添加到暂存区 git add index.html   或者文件夹 git add images 或者 所有文件 git add .
3. 查看当前版本库的状态(添加 提交 删除等状态) git status
4. 把代码提交到本地的仓库 git commit -m '提交日志'  -m是提交说明(日志)的意思     (提交会自动产生一个版本源代码版本)
 第一次commit会报错 原因是没有配置用户名和邮箱 git不知道是谁在提交
 两句命令 一个配置邮箱 一个配置用户名 分别执行
 git config --global user.email "22819715@qq.com"
 git config --global user.name "zwxs"
 --global全局配置的意思  配置了一次以后后不需要在配置 如没有加全局 后面每个项目都需要配置用户和邮箱
5. 查看当前本地仓库所有提交的版本号 git log  
6. 如果后面项目源代码有更新  源代码版本也要更新
 git add .  重新把新的代码添加到暂存区
 git commit -m '新的提交日志'  把新的暂存区的代码提交到本地仓库</pre>

## 3. git的其他命令

1.  git版本回退  git reset --hard HEAD^ 回到上一个版本  git reset --hard 0bc1129 回到指定的版本

2.  查看所有版本号  git reflog 查看所有的版本号

3.  git status 查看当前版本库的状态 查看当前有哪些文件没有添加到暂存区  查看当前有哪些文件没有提交到本地仓库

4.  git diff 查看当前代码和本地代码的区别  同一个文件之前本地仓库是什么样子的  你最新写了什么代码

5.  git remote 改变远程地址

    1.  如果设置了一个远程仓库地址 但是不是你想要的

    2.  先删除之前的远程仓库地址 git remote rm origin

    3.  再添加一个新的远程仓库地址 git remote add origin [git@github.com](mailto:git@github.com):zwxs/jd24.git


6.  git checkout 撤退撤销当前代码的更改  git checkout -- 指定文件.扩展名

7.  git reset HEAD readme.txt 回退add 撤销add  git add . 但是有个文件不需要加的 
单独把这个文件撤销  git reset HEAD 文件名.扩展名

## 4. github

1.  是一个git的 远程服务器的提供商 (最好用最有名的) 把你本地仓库的代码共享给别人看 下载等

2.  github 可以把你的项目 托管到服务器上 被人可以看到和下载你的代码 作为静态页面的服务器 
使用官方的域名实现博客预览等等 可以看到很大大神代码 开源项目 学习最新最前沿的技术

3.  github 提出社交化的编程概念, 可以像看微博 看朋友圈一样看别人代码 点赞 关注等 github就是程序员的新浪微博

## 5. github注册账号

1.  注册步骤:[https://www.baidu.com/link?url=zXSuSQZ2b67rZXEwCa5bHquBkTVyPiwieuiEMkfP_AZCiNO6GpnMPG3MOQi7hYTpbVWNCEh7DdgJ6g4wQHht3nKAlzvMptEAdpCaj-seHJW&wd=&eqid=c453f15f000466be000000065bdaa382](https://www.baidu.com/link?url=zXSuSQZ2b67rZXEwCa5bHquBkTVyPiwieuiEMkfP_AZCiNO6GpnMPG3MOQi7hYTpbVWNCEh7DdgJ6g4wQHht3nKAlzvMptEAdpCaj-seHJW&wd=&eqid=c453f15f000466be000000065bdaa382)

## 6. 使用git和github交互
1. 去github上去创建一个服务器的仓库
 1. 打开github官网 登录 
 2. 点击右上角头像左边的+号
 3. 点击New repository  新建一个本地仓库
 4. 输入Repository name仓库名  不能有中文空格等特殊符号  尽量用纯英文
 5. 输入一个仓库的描述
 6. 选择public
 7. 是否要初始化一个README阅读我 不要勾
 8. 点击创建
2. 让本地仓库和远程仓库连接起来 (做一次即可)
 git remote add origin  git@github.com:zwxs/jd23.git  让本地仓库和远程仓库连接 
 git@github.com:zwxs/jd23.git 远程仓库地址 github给你提供的
3. 把本地仓库的代码提交到远程的仓库里面
 git push -u origin master  把本地代码提交到远程的master(主)分支里面</pre>

## 把本地电脑和github服务器账号相关联
1. 使用https 是需要输入用户名和密码的方式  每次都要输入 输错就把提交命令再执行一次 会重新让你输入
2. 使用SSH  可以让本地电脑和github账号相关联 关联了之后就是永久
 1. 理解原理: 使用一个本地秘钥(电脑的身份证) 把你的本地秘钥和服务器github账号相互绑定  把身份证绑定到服务器账号上
 你每次提交都会读取你当前的本地的秘钥 
 再和你本地仓库管理的github服务器仓库的账号里面的秘钥对应
 如果是一样的就认为github是认可这台电脑的就允许提交
 2. 在本地电脑生成一个秘钥:
 在gitbash黑窗里面执行 ssh-keygen -t rsa -C "228197155@qq.com"
 输入后一路回车 出现2048就表示成功
 3. 秘钥生成后会在C盘 》 用户 》 你的用户(英文或者administor) 》 .ssh 》 id_rsa.pub 
 id_rsa.pub  本地公钥(公开的钥匙) 
 把这个id_rsa.pub 使用记事本打开 把乱码复制一下
 4. 打开github账号
 点击设置
 点击SSH设置
 点击右上角new SSHKey
 输入title(你的名字) key (复制公钥里面的乱码)
 点击Add即可
 出现一个黑色的钥匙就表示成功</pre>

## 7. 一个项目从头到尾使用git步骤

2.  创建一个项目 被管理的项目

3.  进入项目打开黑窗 输入 git init 初始化

4.  把要管理的代码添加到暂存区 git add .

5.  把暂存区代码提交到本地仓库 git commit -m '提交日志'

6.  要把本地仓库提交到服务器

7.  创建一个服务器的仓库 new repository

8.  关联当前本地仓库和远程仓库 git remote add origin [git@github.com](mailto:git@github.com):zwxs/demo1.git

9.  把本地仓库代码提交到服务器里面 git push -u orgin master  如果是第一次提交没有配置SSH秘钥是无法提交

    1.  黑窗生成一公钥 ssh-keygen -t rsa -C "[228197155@qq.com](mailto:228197155@qq.com)" 把邮箱改成自己的

    2.  复制.ssh 里面的.pub公钥去github绑定

    3.  使用push 把本地仓库代码提交到远程仓库

10.  如果项目修改 在git add . 把新增修改的代码添加到暂存区

11.  把新增修改的暂存区代码提交到本地仓库 git commit -m '提交日志'

12.  把本地仓库代码提交到远程服务器仓库 git push origin master

## 8. git的分支使用

分支的作用:当项目庞大的时候才需要使用分支就把项目细分成很
多分支大家在不同分支里面写代码互不影响

1.  查看分支 git branch

2.  创建分支 git branch 分支名 例如 git branch zhangsan

3.  切换分支 git checkout 分支名 例如 git checkout zhangsan

4.  合并分支 git merge 分支名 例如 git merge zhangsan 
(会把张三分支合并到当前分支如果已经是在张三分支下是没有效果的
 只能在非当前分支才能合并这个分支 例如 在主分支里面合并张三的分支)

    5.  提交到远程 git push -u origin 分支名 例如 git push -u origin zhangsan
 就会把代码提交到远程github的张三分支里面

    6.  git分支合并的冲突解决 [https://www.cnblogs.com/mengdd/p/3585038.html](https://www.cnblogs.com/mengdd/p/3585038.html)

## 9. 使用github实现静态页面托管

1.  把本地静态页面托管到github服务器 让github服务器作为你的服务器
 来显示你的页面

2.  步骤1

    1.  打开github的仓库

    2.  点击代码文件夹左上角 branch master

    3.  在输入框里面输入gh-pages (分支) 按回车

    4.  打开域名用户名.github.io/仓库名  zwxs.github.io/jd2

3.  步骤2

    1.  打开git bash黑窗

    2.  创建一个分支 git branch gh-pages

    3.  查看分支 git branch 查看所有分支

    4.  切换到gh-pages分支 git checkout gh-pages

    5.  把本地的代码提交到远程仓库的gh-pages分支 git push -u origin gh-pages

## 10. 总结

1.  版本: 软件更新一个编号 1.0 2.0 3.0

2.  补丁: 大版本出了问题需要维护 产生一个新的版本(小版本) 1.1 1.1.1 1.1.1.1

3.  版本管理: 版本太多的时候源码也会很多 源代码有多份 
管理起来 把每个版本的代码记录下来如果新版本出了问题回到之前的旧版本

4.  常见的版本管理系统: svn git vss

5.  集中式版本管理 分布式版本管理

    1.  svn集中式是集中在一台服务器电脑上管理代码的版本 需要联网 对服务器要求高 不开源

    2.  git分布式的分布在每个人电脑上去管理版本 版本更新版本
回退等都是在本地 服务器只是用来开源项目 多人协作开发使用 
不需要联网 对服务器要求不高适合开源项目

6.  git软件 一路下一步安装出现 git bash成功

7.  git基本命令

    1.  git init 初始化本地仓库

    2.  git add . 添加到暂存区

    3.  git commit -m '提交日志' 把代码提交到本地的仓库

    4.  git status 查看添加状态

    5.  git log 查看提交详细日志

    6.  git remote add origin 远程仓库的地址 指定远程仓库地址

    7.  git remote rm origin 删除远程仓库的地址

    8.  git push -u origin master 把本地代码提交到远程仓库主分支

    9.  git reset --hard HEAD^ 回退到上一个版本

    10.  git reset --hard 版本号 回退到指定版本

    11.  git reflog 查看所有版本号

    12.  git diff 查看对比

    13.  git checkout -- 文件 撤销更改

    14.  git reset HEAD 文件 撤销add

    15.  git branch 分支名 创建一个分支

    16.  git checkout 分支名 切换到分支

    17.  git merge 分支名 合并分支

    18.  git push -u origin 分支 提交到指定的分支

    19.  git clone 仓库地址 克隆远程仓库到本地

    20.  git pull 把远程代码更新

8.  静态页面托管
github.io 
9,gitbook
10,hexo  配合git 搭建
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容