1.Git介绍

1.1版本控制(理解)

无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改的情况

1.2开发中存在的问题(理解)

  • 程序员小明负责的模块就要完成了,就在即将提交发布之前的一瞬间,电脑突然蓝屏,硬盘光荣下岗!

几个月来的努力付之东流

老王需要在项目中加入一个很复杂的功能,一边尝试,一边修改代码,就这样摸索了一个星期。 可是这被改得面目全非的代码已经回不到从前了。

小明和老王先后从文件服务器上下载了同一个文件

因项目中Bug过多,导致项目进度拖延,项目经理老徐因此被骂,但不清楚Bug是手下哪一个程序员写的

开发中要解决的问题

  • 代码备份

  • 版本控制

  • 协同工作

  • 责任追溯

为了避免开发中存在的这些问题,我们将使用专业的代码版本控制系统

SVN

git

Git与SVN对比

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑, 所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。

  • 服务器单点故障

    将会导致所有人员无法工作

  • 而服务器硬盘损坏

    这意味着,你可能失去了该项目的所有历史记录,这是毁灭性的。

1.4Git版本控制(理解)

Git是在2005年,Linux系统的创建者Linus Torvalds,为了帮助全球的开发者,维护Linux系统内核的开发 而开发了自己的开源分布式版本控制工具,分为两种类型的仓库:本地仓库和远程仓库。

  • 每一个客户端都保存了完整的历史记录

    服务器的故障,都可以通过客户端的记录得以恢复。

每一个客户端都保存了完整的历史记录

服务器的故障,都可以通过客户端的记录得以恢复

2.Git下载和安装

2.1Git的下载(应用)

官网下载地址:https://git-scm.com/downloads

2.2Git的安装(应用)

  1. 双击安装包,进入安装向导界面

指定安装目录

一路next下一步

等待安装

安装完成

安装完成后在电脑桌面(也可以是其他目录)点击右键,如果能够看到如下两个菜单则说明Git安装成功。

运行Git命令客户端,使用git --version 命令,可以查看git版本

2.3TortoiseGit的安装(应用)

双击安装包,进入安装向导界面

一路next下一步

指定安装目录

安装

配置

安装TortoiseGit中文语言包,一路next即可

配置TortoiseGit中文语言

3.Git操作入门

3.1Git基本工作流程(理解)

本地仓库

3.2Git命令行操作(应用)

  • git常用命令

    命令 作用
    git init 初始化,创建 git 仓库
    git status 查看 git 状态 (文件是否进行了添加、提交操作)
    git add 文件名 添加,将指定文件添加到暂存区
    git commit -m '提交信息' 提交,将暂存区文件提交到历史仓库
    git log 查看日志( git 提交的历史日志)

操作步骤

  1. 操作步骤

    1. 创建工作目录、初始化本地 git 仓库  看隐藏文件

    2. 新建一个 test.txt 文件(暂不执行添加操作)

    3. 使用 status 命令,查看状态

    4. 使用 add 命令添加,并查看状态

    5. 使用 commit 命令,提交到本地历史仓库

    6. 使用 log 命令,查看日志

    7. 修改 test.txt 文件

    8. 添加并提交,查看日志

      

3.3Git图形化工具操作(理解)

  1. 创建工作目录、初始化本地 git 仓库

  2. 新建一个 test.txt 文件(暂不执行添加操作)

  3. 选中文件右键,选择TortoiseGit,之后选择添加

  4. 空白处右键,Git提交,提交到本地历史仓库

  5. 空白处右键,TortoiseGit,显示日志,可以产看日志信息

  6. 修改 test.txt 文件

  7. 添加并提交,查看日志

4.Git版本管理

4.1历史版本切换(理解)

  • 准备动作

    1. 查看 my_project 的 log 日志    git reflog :可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录的操作)

    2. 增加一次新的修改记录

  • 需求: 将代码切换到第二次修改的版本

  • 指令:git reset --hard 版本唯一索引值

4.2分支管理介绍(理解)

  • 分支

    • 由每次提交的代码,串成的一条时间线  。两条时间线,并行工作,互不打扰   多条时间线可以合并

    • 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线

  • 分支的使用场景

    1. 周期较长的模块开发 假设你准备开发一个新功能,但是需要一个月才能完成 第一周写了20%的代码,突然发现原来已经写好的功能出现了一个严重的Bug 那现在就需要放下手中的新功能,去修复Bug 但这20%的代码不能舍弃,并且也担心丢失,这就需要开启一个新的版本控制。

    2. 尝试性的模块开发 业务人员给我们提出了一个需求,经过我们的思考和分析 该需求应该可以使用技术手段进行实现。 但是我们还不敢确定,我们就可以去创建一个分支基于分支进行尝试性开发。

    3. 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线
  • 分支工作流程

    • Master: 指向提交的代码版本

    • Header: 指向当前所使用的的分支

    • 创建新分支

    • 切换分支
    • 合并分支
    • 删除分支

4.3分支管理操作(应用)

  • 创建和切换

    创建命令:git branch 分支名      切换命令:git checkout 分支名

  • 新分支添加文件

    查看文件命令:ls

  • 查看分支列表:git branch

  • 总结:不同分支之间的关系是平行的关系,不会相互影响

  • 合并分支

    合并命令:git merge 分支名

  • 删除分支

    删除命令:git branch -d 分支名

  • 查看分支列表

    查看命令:git branch

5.1远程仓库工作流程(理解)

5.2远程仓库平台介绍(理解)

  • GitHub

    域名:https://github.com 介绍:GitHub是全球最大的开源项目托管平台,俗称大型程序员社区化交友网站

    各类好玩有趣的开源项目,只有想不到,没有找不到。

  • 码云

    域名:https://gitee.com 介绍:码云是全国最大的开源项目托管平台,良心平台,速度快,提供免费私有库

5.3码云的注册(应用)

 远程仓库平台

5.4先有本地项目,远程为空(应用)

步骤

  1. 创建本地仓库

  2. 创建或修改文件,添加(add)文件到暂存区,提交(commit)到本地仓库

  3. 创建远程仓库

  4. 推送到远程仓库

创建远程仓库

生成SSH公钥

  • 推送代码之前,需要先配置SSH公钥

设置Git账户   生成SSH公匙  设置账户公匙  公匙测试

  • git config user.name(查看git账户)

  • git config user.email(查看git邮箱)

  • git config --global user.name “账户名”(设置全局账户名)

  • git config --global user.email “邮箱”(设置全局邮箱)

  • cd ~/.ssh(查看是否生成过SSH公钥)

生成SSH公钥

  • 生成命令: ssh-keygen –t rsa –C “邮箱” ( 注意:这里需要敲3次回车)

  • 查看命令: cat ~/.ssh/id-rsa.pub

  • 设置账户公钥

  • 公钥测试

    

推送到远程仓库

  • 步骤

    1. 为远程仓库的URL(网址),自定义仓库名称

    2. 推送

  • 命令 git remote add 远程名称 远程仓库URL git push -u 仓库名称 分支名

远程仓库平台

推送到远程仓库

步骤:

  1.为远程仓库的url(网址),自定义仓库 名称       远程仓库名称太长,要自定义

  2.推送

命令:

  git remote add 远程名称 远程仓库URL

  git push -u 仓库名称 分支名  

5.5先有远程仓库,本地为空(应用)

  • 步骤

    1. 将远程仓库的代码,克隆到本地仓库 克隆命令:git clone 仓库地址

    2. 创建新文件,添加并提交到本地仓库

    3. 推送至远程仓库

    4. 项目拉取更新 拉取命令:git pull 远程仓库名 分支名

5.6代码冲突(应用)

  • 产生原因:

    两个程序员操作同一个文件,其中一个程序员在修改文件后,push到远程仓库,另一个程序员应该先pull将最新的代码更新到本地仓库后,在修改代码,之后push到远程仓库,结果他没有先pull将最新的代码更新到本地仓库,而是直接将自己的代码push到远程仓库,这样就可能会导致代码冲突

cat test1.txt

如何解决冲突

<<<<<<<和>>>>>>>中间的内容,就是冲突部分

  1. 修改冲突行,保存,即可解决冲突。

  2. 重新add冲突文件并commit到本地仓库,重新push到远程

6.IDEA集成Git

6.1IDEA中配置Git(应用)

  1. File -> Settings

  1. Version Control -> Git -> 指定git.exe存放目录

  1. 点击Test测试

6.2创建本地仓库(应用)

  1. VCS->Import into Version Control->Create Git Repository

  2. 选择工程所在的目录,这样就创建好本地仓库了

  3. 点击git后边的对勾,将当前项目代码提交到本地仓库

    注意: 项目中的配置文件不需要提交到本地仓库中,提交时,忽略掉即可

 

6.3版本切换(应用)

  • 方式一: 控制台Version Control->Log->Reset Current Branch...->Reset

    这种切换的特点是会抛弃原来的提交记录

  • 方式二:控制台Version Control->Log->Revert Commit->Merge->处理代码->commit

    这种切换的特点是会当成一个新的提交记录,之前的提交记录也都保留

6.4分支管理(应用)

  • 创建分支

    VCS->Git->Branches->New Branch->给分支起名字->ok

  • 切换分支

    idea右下角Git->选择要切换的分支->checkout

  • 合并分支

    VCS->Git->Merge changes->选择要合并的分支->merge

    处理分支中的代码

  • 删除分支

    idea右下角->选中要删除的分支->Delete

     

6.5本地仓库推送到远程仓库(应用)

  1. VCS->Git->Push->点击master Define remote

  2. 将远程仓库的路径复制过来->Push

6.6远程仓库克隆到本地仓库(应用)

File->Close Project->Checkout from Version Control->Git->指定远程仓库的路径->指定本地存放的路径->clone

15.Git的更多相关文章

  1. 15.Git面试题

    1.git常见命令作用 git init 在哪一目录下,就会在该目录下生成.git目录. 注意:git init命令会把当前目录当作库. git status 查看本地库的状态 git add . 将 ...

  2. 15.Git四种协议-本地协议(local)、HTTP协议、SSH协议、Git协议

    1.本地协议(loacl) 最基本的协议,其远程仓库其实就是硬盘内部的一个目录(例如D:\\project).常见于团队内的人对一个共享的文件系统(例如NFS)具有访问权限,或者多人共用一台电脑的情况 ...

  3. 版本控制-Git服务器搭建和常用命令使用

    Git是目前世界上最先进的分布式版本控制系统(没有之一).使用Svn的请参考<版本控制-svn服务器搭建和常用命令(centos 6.3)>,下面介绍Git的常用命令 常用命令 简单版 升 ...

  4. Git 本地项目上传至托管平台(OsChina/GitHub)

    为了方便自己的代码管理,通常是把自己的写的一些小项目分享到GitHub 或者git.oschina上面! 区别: GitHub 只能创建公开的项目,国外的,速度慢! git.oschina 开源中国的 ...

  5. etcd命令说明 etcd Version: 3.0.15

    etcd Version: 3.0.15Git SHA: fc00305Go Version: go1.6.3Go OS/Arch: linux/amd64 https://github.com/co ...

  6. Git命令学习摘要

    1.git init  --初始化git项目 2.git status --查看项目的状态 3.git add filename --添加文件到项目 4.git diff filename --查看工 ...

  7. Git基础知识与常用命令

    一:相关概念: 1:工作区(Working Directory): 就是你在电脑里能看到的目录 2:版本库(Repository): 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库. ...

  8. Git入门仅这篇就够了

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/5978937.html 前言 大家好,我是Cavalier ...

  9. git使用详细介绍

    1. Git概念 1.1. Git库中由三部分组成        Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而 ...

随机推荐

  1. frp实现内网穿透

    frp实现内网穿透 目标 通过外网访问内网设备,本文中实现通过手机的移动流量,可以访问到树莓派设备 设备准备 需要被访问的设备(本文中使用Raspberry Pi`).公网IP设备(本文中使用阿里云 ...

  2. Java单链表反转图文详解

    Java单链表反转图文详解 最近在回顾链表反转问题中,突然有一些新的发现和收获,特此整理一下,与大家分享 背景回顾 单链表的存储结构如图: 数据域存放数据元素,指针域存放后继结点地址 我们以一条 N1 ...

  3. HTML总结篇

    一.HTML基本结构标签 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  4. DAOS 分布式异步对象存储|安全模型

    DAOS 使用了一个灵活的安全模型,将身份验证和授权分离开来.它的设计令其对 I/O 的影响被降到最小. DAOS 对用于 I/O 传输的网络结构没有提供任何传输安全性保障.在部署 DAOS 时,管理 ...

  5. 全网最详细的Linux命令系列-cd命令

    Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧. 命令格 ...

  6. Visual Studio 2015 无法加载.Net FrameWork4.6.2

    默认的VS2015是没有.Net Framework4.6.2的 需要我们去到微软官网下载对应的.NET Framework 4.6.2的安装包 安装包分两种,一种是应用级别的还一种是开发级别的,如果 ...

  7. 100天搞定机器学习:PyYAML基础教程

    编程中免不了要写配置文件,今天我们继续Python网络编程,学习一个比 JSON 更简洁和强大的语言----YAML .本文老胡简单介绍 YAML 的语法和用法,以及 YAML 在机器学习项目中的应用 ...

  8. Java多线程编程(同步、死锁、生产消费者问题)

    Java多线程编程(同步.死锁.生产消费): 关于线程同步以及死锁问题: 线程同步概念:是指若干个线程对象并行进行资源的访问时实现的资源处理保护操作: 线程死锁概念:是指两个线程都在等待对方先完成,造 ...

  9. ASP检测客户是否取消微信公众号

    有时因为项目内需要用到检测客户是否已经取消关注微信公众号,只有没被取消执行相关模板信息发送.图文信息发送.视频语音等信息发送给客户才有意义.也可以知道多少客户还在我们的微信公众号关注内.方便后期做公众 ...

  10. 脱壳——修复加密IAT

    脱壳--修复加密IAT 对两个练手程序进行脱壳修复加密IAT(其实是一个程序,只是用了几种不同的加壳方式) 第一个程序 Aspack.exe 下载链接:https://download.csdn.ne ...