【学习:git使用一】

1、git介绍

git: 版本控制器 其主要作用, 保证项目代码在开发阶段, 任何代码都不会丢失. 而且可以快速的获取到任何阶段的开发代码
使用git目标:
1, 使用git, 完成本地项目进度版本管理
2, 使用git, 将本地代码同步到远程测试服务器. 同时与他人协作开发

2、git安装

2.1 windows安装

windows安装 官网下载包安装,安装好后本地开始菜单有Git ,使用 Git Bash 即可

2.2 linux安装

linux安装
1、官网压缩包安装
2、yum 指令安装

3、git基本功能

本地windows开发 然后才提交到 服务器

实例 -- windows的Git Bash 使用(先看实例)

> cd d:
> cd 本地项目根目录 // cd web/app/test/
# 现在到了项目根目录,然后初始化 git
> git init
# 到了第一个时间节点,提交第一版本代码
> git add . // 提交第一版本所有代码
> git commit -m '第一版本' // 对刚提交的版本做一个版本描述,记录
# 查看提交记录日志
> git log //注释:途中 master :主线 ,还有 branch:分支
这里写图片描述
# 此时到了第二个时间节点,提交第二个版本(第一版本的代码有修改,第二版本代码新增)
> git add . // 提交第二版本所有代码(包含修改第一版本的,新增的第二版本的)
> git commit -m '第二版本'
> git log      
这里写图片描述
# 此时需要从第二版本回退到第一版
git reset --hard 版本号 // 版本号就是第一版本号(需要去到的版本号,可以任意取前10位左右字符即可,保证能区别版本)
这里写图片描述
# 此时是第一版本
git reflog // 该指令查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
这里写图片描述
# 需求要回到第二版本
git reset --hard 第二版本号


3、git指令

本地开发

3.1 git init    初始化git版本库

3.2 git config    配置

> git config --list    列出配置项
> git config 配置项名 值    修改配置项
> git config --list    列出配置项
   配置如下
> git config --global user.name "sgw "
> git config --global user.email "hello_sgw@163.com"
   修改
> git config --global --edit"
   删除
> git config --global --unset user.email
这里写图片描述
注意这里:支持三个层级
git config --system 【1、系统】 针对于所有的用户的配置
git config --global 【2、全局(用户级)】 针对于当前系统的登录用户, 配置生效, 无论该用户管理几个git版本库项目, 配置是一致的
git config --local   【3、项目(本地)】 仅仅针对于当前项目起作用.

 -- 范围小的配置会重写范围大的配置 --

3.3 git add     添加到暂存

> git add 文件列表    添加相应的文件到暂存区
> git add .    添加全部文件到暂存区

3.4 git commit    提交版本

//如果是第一次提交(第一次安装git, 第一次提交, 需要配置提交的用户信息才可以

> git commit –m ‘版本描述’    提交版本 //一旦提交, 修改就不在暂存区了
> git commit // 不带 ‘ -m 版本描述’,就会触发vi,进行文件编写
> git commit –a –m ‘版本描述’    -a, 参数, 表示先完成 git add . 再去提交.

> git add . && git commit –m ‘版本描述’ // 等同上一个指令

3.5 git status    状态

3.5.1 工作区、暂存区、版本库概念

> git status 查看状态
工作区: 项目目录, 不包含.git的部分, 就是工作区. 我们在工作区完成代码的编写
这里写图片描述
暂存区: 临时存储需要被提交的修改的区域.内部的修改, 在commit时, 会被提交到版本库中. 如果需要提交, 则必须现在暂存区进行整理才可以
这里写图片描述
版本库: 存储提交的版本的区域。是逻辑区域,不是文件,没办法看到

3.5.2 文件状态

针对与文件所处的不同逻辑区域, 文件称之为一下状态:
未追踪 文件第一次出现在工作区, 版本库还没有存储该文件的状态
已追踪 只要第一次,add了文件, 文件就是已追踪.
未修改 文件在工作区未被编辑.
已修改 文件在工作区被修改.
未暂存 文件已修改, 但是没有add到暂存区
已暂存 已经将修改的文件add到暂存区
未提交 已暂存的文件, 没有commit提交,处于暂存区
已提交 提交到版本库的文件修改

这里写图片描述

3.6 git rm    删除文件, 删除追踪

> git add 文件名 将文件加入到版本库暂存区. 如果文件新加, 则追踪
> git rm 文件名 将文件从版本库的追踪状态删除. 同时删除文件

> git rm 文件名
这里写图片描述

3.7 git log    提交的日志

> git log 默认触发一个翻页查看程序. less(类似于more), 通过 空格, ctrl+b, q 完成 下一页, 上一页, 退出 操作
> git log --author="用户" // 用户过滤
> git log --after="2018-07-30 10:00:00" --before="2018-07-30 11:00:00"// 时间段过滤
把用户和时间结合用也可以
> git log --pretty="oneline" //格式化输出,只显示版本号和备注信息 > > > git log -p //输出版本内修改内容

3.8 git reset    重置版本

重置

> git reset --hard 目标版本提交的ID // git log获取ID
注意: 重置后, 在提交日志中, 不能出现, 在重置版本之后的代码版本了

如何重置到已有的后面版本中(切换到将来)?

> git reflog 关联日志, 用于记录, 版本的重置状况; 可以记录下来,从哪个版本切换过来的,里面有版本号,就可以切换到想要的版本 。
与log不同, log仅仅记录到目前为止的版本

硬重置

git reset --hard 版本号 将当前的工作区(代码), 直接切换到目标的版本

软重置

git reset --soft 版本号
1、与硬重置相对,代码也会切换到目标版本。
2、但是,会保留工作区中的修改。会记录下 当前版本 与切换的 目标版本 间的差异(修改),并暂存到暂存区中;此时决定权就在用户手上, 可以选择==> A、 保留某些修改(再次提交即可)B、重置某些修改

软重置常用场景:

某个版本提交了10个修改. 但是其中3个需要会退到上一版本, 7个修改需要保留.如果是硬回退, 10个修改全部需要丢弃. 可以选软回退. 记录了这些修改. 选择性完成 撤销修改还是保留修改

取消暂存

> git reset HEAD 文件名列表 取消某个文件的暂存。注意, 取消暂存,,不是取消修改,文件的修改还是存在, 而仅仅是不在暂存区而已,需要撤销修改

撤销修改

> git checkout -- 文件名列表
发生了修改

这里写图片描述
撤销修改
这里写图片描述

版本指针

当前版本的指针永远指向当前所处的版本。
通常情况是指向最新的版本,当切换版本时,调整了指针的版本指向没有消失,指向发生了改动

这里写图片描述
使用HEAD指针的相对操作完成重置
HEAD^          前1个版本, HEAD~1
HEAD^^         前2个版本, HEAD~2
HEAD^^^       前3个版本, HEAD~3
HEAD~50      前50个版本


> git reset --soft HEAD^ 指向前一个版本

忽略追踪

> vim .gitignore
这里写图片描述
这里写图片描述
这里写图片描述

注意!!!

一定要在第一次 git add 文件前,完成忽略配置。一旦文件被追踪,忽略不能生效! 此时需要删除该文件 git rm ,才能在下次生效。
git init 之后,就需要完成: 配置 vim .gitignore工作

4、远程(多人)协作【上】

1、多人协作部署结构
这里写图片描述
2、远程(公共)版本库

通常,仅仅做代码版本库的管理,不做开发而用。
在配置远程(公共)版本库时,选择裸版本库,只有版本库,没有工作区的版本库.
(仅仅需要 .git 目录即可)

在 linux 上
搭建该公共(裸)版本库,前提,linux 已经安装了 git
通常裸库, 都是使用 .git 作为目录名的结束,表示是个版本库目录

这里写图片描述
裸库 目录中, 没有工作区, 直接就是.git对应的内容
这里写图片描述
注意:这里linux上的 zhangsan的目录为
/home/zhangsan/repo/shop.git

这里写图片描述

3、利用远程(公共)版本库, 克隆本地库

本地, 需要通过clone实现, 本地版本库的创建. 克隆自远程版本库
回到windows本地的git去操作!克隆远程服务器linux版本库(注意windows的git回到目录下去克隆)

指令是: git clone

git clone ssh://zhangsan@120.xx.xx.xx:22/home/zhangsan/repo/shop.git linux上裸板本库的用户名@ip地址 + 上一步裸板本库的服务器地址目录
回到windows下本地git,执行如下命令克隆

正常情况
这里写图片描述
报错情况 git-upload-pack: command not found
这里写图片描述
解决方案是: 在远程版本库上, 建立一个符号链接, 链接: git-upload-pack
到zhangsan登录的linux下执行命令 sudo ln -s /usr/bin/git-upload-pack /bin/
【注意:zhangsan的git-upload-pack是 /usr/bin/git-upload-pack目录】
【上面语法意思,就是把/usr/bin/git-upload-pack建立一个符号链接到 /bin/上】
符号链接知识参考本文底部 #附录
这里写图片描述
这里写图片描述
成功创建克隆的shop目录
这里写图片描述
如果想 改名 ,例如在windows的git执行时,把shop改成othershop,则 在克隆时指令如下:
git clone ssh://zhangsan@120.xx.xx.xx:22/home/zhangsan/repo/shop.git
othershop

# 附录

1、 链接文件

一种特殊类型的文件,访问文件的特殊(快捷)的方式
1、符号链接(快捷方式) symbol link,软链接
这里写图片描述
linux上,符号链接特点

1、使用 l 表示
2、有 -> 箭头表链接
这里写图片描述
目的, 提供某个文件, 的多种快速访问方式

实例 -- 设置符号链接
语法> ln -s 源文件 链接文件

这里写图片描述
操作符号链接文件 two.log.link, 就是操作了源文件 one.log

删除了源文件 one.log, 链接文件就失效了

这里写图片描述

2、9.2硬链接 hard link 不是一个快捷方式指向另一个文件,而是两个文件名同时引用一个文件内容。类似(PHP 引用传递 $v2 = &$v1)

这里写图片描述
一个文件内容,提供了多种访问的途径,一旦建立硬链接文件后, 源文件与目标链接文件间, 没什么关系了

语法 > ln 源文件 链接文件

这里写图片描述
修改其中一个文件, 另一个也变.
但是删除其中一个, 另一个不受影响

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值