git命令

为什么需要?

  • 防止文件丢失

  • 保存各个版本

有了又怎么样?

  • 自动生成备份

  • 随时回滚

  • 知道改动的地方

常见的版本管理工具

  • svn
集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库挂了或者不可访问,所有的使用者无法使用SVN,无法进行提交或备份文件。

在这里插入图片描述

  • git
分布式的版本控制系统,在每个使用者电脑上就有一个完整的数据仓库,没有网络依然可以使用Git。当然为了习惯及团队协作,会将本地数据同步到Git服务器或者GitHub等代码仓库。 #一般只做代码级的共享,团队合作搭建gitlab/GitHub

在这里插入图片描述


git安装配置

  • Git分布式版本控制系统最佳实践 - 老男孩教育博客 http://blog.oldboyedu.com/git/

  • 系统环境 :CentOS7.2 防火墙和selinux关闭 (适用于Linux,Windows下载git软件安装)

systemctl disable firewalld
vim /etc/selinux/config
getenforce
  • 安装Git
yum -y install git #系统也可能自带了
  • Git全局配置(配置一次)
git config --global user.name "zy" #配置git使用用户
git config --global user.email "zhangyao@oldboyedu.com" #配置git使用邮箱
git config --global color.ui true #语法高亮
git config --list # 查看全局配置
ssh-keygen -t rsa -C "your@mail.com" #生成秘钥,上次公钥,也可以不带邮箱,就没有邮箱认证了

初始化GIT工作目录

mkdir git_data
cd git_data/
# 初始化
git init
# 查看工作区状态
git status

常规使用(创建数 据-提交数据)

touch README
git status
git add README ##所有工作都添加到暂存区,一天之后才添加到仓库
git status
git commit -m 'first commit'   #→git commit提交暂存文件至版本库

在这里插入图片描述

GIT COMMIT –A参数

  • 添加新文件
git add . 添加到暂存区域
git commit 提交git仓库 -m 后面接上注释信息,内容关于本次提交的说明,方便自己或他人查看
  • 修改或删除原有文件
常规方法
git add * #添加到暂存区域
git commit #提交到git仓库
简便方法
git commit -a -m "注释信息,关于本次提交的说明,方便自己或他人查看" -a 表示直接提交
Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are 
not affected.

删除暂存区数据

  • 没有添加到暂存区的数据直接rm删除即可。

  • 已经添加到暂存区数据:

git rm --cached database  
git rm --cached file
#→将文件从git暂存区域的追踪列表移除(并不会删除当前工作目录内的数据文件) 
git rm -f database  
git rm -f file
#→将文件数据从git暂存区和工作目录一起删除
# 服务器存储的目录是密文

重命名暂存区数据

  • 没有添加到暂存区的数据直接mv/rename改名即可。

  • 已经添加到暂存区数据:

git mv README NOTICE #改名
git commit -a -m 'modifief README file' #将git add 和git commit的功能二合一
  • 注意:git不会提交空目录

查看历史记录

git log #→查看提交历史记录
git log -2 #→查看最近几条记录
git log -p -1 #→-p显示每次提交的内容差异,例如仅查看最近一次差异
git log --stat -2 #→--stat简要显示数据增改行数,这样能够看到提交中修改过的内容,对文件添加或移动的行数,并在最后列出所有增减行的概要信息
git log --pretty=oneline #→--pretty根据不同的格式展示提交的历史信息
git log --pretty=fuller -2 #→以更详细的模式输出提交的历史记录
git log --pretty=fomat:"%h %cn" #→查看当前所有提交记录的简短SHA-1哈希字串与提交着的姓名,其他格式见备注。

还原历史数据

Git服务程序中有一个叫做HEAD的版本指针(软链接),当用户申请还原数据时,其实就是将HEAD指针指向到某特定的提交版本,但是因为Git是分布式版本控制系统,为了避免历史记录冲突,故使用了SHA-1计算出六进制的哈希字串来区分每个提交版本,另外默认的HEAD版本指针会指向到最近的一次提交版本记录,而上一个提交版本会叫HEAD,上上一个版本则会叫做HEAD^,当然一般会用HEAD~5来表示往上数第五个提交版本。

git reset --hard HEAD^ #→还原历史提交版本上一次
git reset --hard HEAD~5
git reset --hard 3de15d4 #→找到历史还原点的SHA-1值后,就可以还原(值不写全,系统
会自动匹配)

还原未来数据

什么是未来数据?就是你还原到历史数据了,但是你后悔了,想撤销更改,但是git

log已经找不到这个版本了。

git reflog #→查看未来历史更新点

标签使用

前面回滚使用的是一串字符串,又长又难记。#方便回滚,标记要有意义,如打上时间
git tag v1.0 #→当前提交内容打一个标签(方便快速回滚),每次提交都可以打个tag。
git tag #→查看当前所有的标签
git show v1.0 #→查看当前1.0版本的详细信息
git tag v1.2 -m "version 1.2 release is test" #→创建带有说明的标签,-a指定标签名字,-m指定说明文字
git tag -d v1.0 #→我们为同一个提交版本设置了两次标签,删除之前的v1.0
[root@centos7 git_data]# git reset --hard 0bdf2e7
HEAD is now at 0bdf2e7 modified README file
[root@centos7 git_data]# git reset --hard V1.0
HEAD is now at a66370a add oldboy dir

对比数据

git diff可以对比当前文件与仓库已保存文件的区别,知道了对README作了什么修改后,再把它提交到仓库就放⼼多了。
git diff README

分支结构

在实际的项目开发中,尽量保证master分支稳定,仅用于发布新版本,平时不要随便直接修改里面的数据文件。
那在哪干活呢?干活都在dev分支上。每个人从dev分支创建自己个人分支,开发完合并到dev分支,最后dev分支合并到master分支。#一般开发没权改动master,只有管理员可以改动
所以团队的合作分支看起来会像下图那样。#专门负责某一项功能,但不修改同一个配置文件

在这里插入图片描述

创建分支

git branch #查看当前分支
git branch linux #→创建分支
git checkout linux #→切换分支
git checkout -- README #一键还原,直接将git仓库的文件覆盖当前文件,危险
git branch #→查看当前分支情况,当前分支前有*号 • 测试在linux分支修改文件并提交到git仓库,最后切换回master分支,你会发现什么呢?

合并分支

在其他分支做的操作不会相互影响,且一般只会在主分支合并,其他的都不需要合并
想把linux的工作成果合并到master分支上

先切换到master分支
git merge linux #→合并Linux分支至master
查看合并的文件
git branch -d linux #→确认合并完成后,可以放心地删除Linux

分支冲突

  • 同时修改master和linux分支同一个文件并提交,最后merge。
  • 查看合并结果
  • 如何解决?
  • 冲突原因:修改了同目录同文件同一行
  • 解决方法:人工选择想要保留的内容
实验:
创建新的分支
git branch linux

在master分支修改文件
echo master >>README
git commit -a -m "this is master commit"

切换到Linux分支,并修改文件
git checkout Linux
echo Linux >>README
git commit -a -m "this is Linux commit" #可以正常提交
#主分支和Linux的仓库是分开的

#切换到主分支
git checkout master
git merge Linux #无法合并

cat README #会把变更的信息写到一个文件,让你选择需要保留的内容,在主分支上改
#可以把不需要的删掉,重新提交
#修改了同名目录同名文件同一行会造成冲突

WINDOWS客户端使用

  • 前面讲的都是linux客户端,在讲讲windows客户端使用,安装Git-2.10.0-64-bit。

  • windows的git,本质是windows上的linux系统

  • TortoiseGit-2.2.0.0-64bit 给git加外壳,svn客户端的git版本

GIT服务器

  • 前面我们已经知道Git人人都是中心,那他们怎么交互数据呢?
  • 使用GitHub或者码云等公共代码仓库
  • 使用GitLab私有仓库
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值