Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是目前世界上最先进的分布式版本控制系统。
与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
什么是版本库?
版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。
git的作用
git就是管理我们这个版本库的管家,其主要作用, 保证项目代码在开发阶段,任何代码都不会丢失. 而且可以快速的获取到任何阶段的开发代码.
git和svn的区别
以前的版本控制入CVS,SVN等都是集中控制管理的,也就是有一个中央服务器,大家都把代码提交到中心节点,而git是分布式的版本控制工具,也就是说没有中央服务器,每个节点的地位平等。
什么是分布式?
分布式处理是将不同地点的,或具有不同功能的,或拥有不同数据的多台计算机通过通信网络连接起来,在控制系统的统一管理控制下,协调地完成大规模信息处理任务的计算机系统。
最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑。不过,慢慢地有人把它移植到了Windows上。现在,Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。
在linux安装git
(1)在Debian或Ubuntu Linux,通过一条sudo apt-get install git
就可以直接完成Git的安装
git
,看看系统有没有安装Git:$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
(2)在centos上安装git
第一步:事先获取安装包,并把安装包上传到centos服务器上。
第二步:挂载光驱
mount /dev/cdrom /media/CentOS
第三步:安装软件依赖
yum --disablerepo=\* --enablerepo=c6-media install gcc gcc-c++ perl perl-devel curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel tcl build-essential tk gettext
第四步:解压-编译-安装
tar zxvf git-2.9.0.tar.gz
cd git-2.9.0 make configure #提示错误没有configure时执行
./configure --prefix=/usr/local/git
make && make install
(1)工作区:就是你在电脑里能看到的目录。
(2)暂存区(缓存区):英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
暂存区是属于版本库中的一部分。
(3)版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。.git中的head/master是分支,是版本库。
(1)创建仓库
mkdir gitdir #创建一个文件夹,准备作为版本库
cd gitdir
git init #初始化版本库
(2)完成一些基本的配置
配置支持三个层级:
系统配置--system, 针对于所有的用户的配置.
git config --systerm user.name ‘名字’;
全局配置(用户级) –global, 针对于当前系统的登录用户, 配置生效, 无论该用户管理几个git版本库项目, 配置是一致的.
git config --global user.name ‘名字’;
项目(本地配置), --local, 仅仅针对于当前项目起作用.
git config --local user.name ‘名字’;
git config --global user.name 'dominik' #配置用户名
git config --global user.email 'dominik@126.com' #配置用户邮箱
(3)查看配置
git config --list
(4)将文件添加到暂存区
git add . #添加所有文件
git add filename #添加单个文件
(5)查看状态
git status
git status -s #简易的查看版本库的状态
(6)提交文件
git commit . #提交所有文件
git commit filename #提交单个文件
(7)撤销修改文件(没有添加到暂存区)
git checkout -- filename
(8)添加到暂存区了,怎样撤销修改
git reset head #先取消暂存
git checkout -- filename #在撤销修改
(9)查看日志
git log
git reflog #查看关联日志
git log -p(更加详细的查看-可以查看它的修改的内容),它会分页显示,按q键退出
git log --pretty=oneline,只显示版本号
git log --after ‘2020-1-1’,显示1月1日之后的日志
git log --before ‘2020-1-1’,显示1月1日之前的日志
git log --author ‘xxx’,显示作者是是哪一位
(10)版本回退
git reset --hard 版本号
(11)查看文件的差异和改动
git diff
尚未缓存的改动:git diff
查看已缓存的改动: git diff --cached
查看已缓存的与未缓存的所有改动:git diff HEAD
显示摘要而非整个 diff:git diff --stat
(12)删除跟踪
git rm filename
具体实例1:删除文件rm file,怎样撤销删除,直接使用 git checkout --file 撤销删除。
使用git rm file删除文件,先取消暂存,然后在撤销删除。
git reset head
git checkout --file
(13)撤销修改(版本回退)
git reset --hard HEAD^ 使用HEAD指针的相对操作完成重置
HEAD^ , 前1个版本, HEAD~1 HEAD^^, 前2个版本, HEAD~2 HEAD^^^, 前3个版本, HEAD~3
具体流程常用命令
1、linux中创建一个远程仓库(服务器)
2、在window中克隆linux中仓库(git clone)
git clone ssh://root@192.168.234.128:22/gits/A
3、推送远程(push)
#推送的时候,要和远程服务器建立一个连接。
git remote add origin ssh://root@192.168.234.128:22/gits/A
git push origin master #origin(远程仓库) master(本地仓库)
4、从远程拉取(pull)
git pull ssh://root@192.168.234.128:22/gits/A
1、创建与合并分支
在Git里,有个分支叫主分支,即master
分支。HEAD
严格来说不是指向提交,而是指向master
,master
才是指向提交的,所以,HEAD
指向的就是当前分支。
一开始的时候,master
分支是一条线,Git用master
指向最新的提交,再用HEAD
指向master
,就能确定当前分支,以及当前分支的提交点:
每次提交,master
分支都会向前移动一步,这样,随着你不断提交,master
分支的线也越来越长, 当我们创建新的分支,例如dev
时,Git新建了一个指针叫dev
,指向master
相同的提交,再把HEAD
指向dev
,就表示当前分支在dev
上:
假如我们在dev
上的工作完成了,就可以把dev
合并到master
上。Git怎么合并呢?最简单的方法,就是直接把master
指向dev
的当前提交,就完成了合并:
所以Git合并分支也很快!就改改指针,工作区内容也不变!
合并完分支后,甚至可以删除dev
分支。删除dev
分支就是把dev
指针给删掉,删掉后,我们就剩下了一条master
分支:
2、具体代码操作
①创建dev
分支,然后切换到dev
分支:
$ git checkout -b dev
Switched to a new branch 'dev'
git checkout
命令加上-b
参数表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
②然后,用git branch
命令查看当前分支(git branch
命令会列出所有分支,当前分支前面会标一个*
号。):
$ git branch * dev
master
③当我们在dev分支修改一个文件并且正常提交后,切回到master主分支,发现主分支的文件并没有发生改变
④合并分支(git merge
命令用于合并指定分支到当前分支。)
$ git merge dev
Updating d17efd8..fec145a
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
⑤合并完成后,就可以放心地删除dev
分支了:
$ git branch -d dev
Deleted branch dev (was fec145a).
Original url: Access
Created at: 2020-02-26 19:45:04
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论