一、git基本介绍

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是目前世界上最先进的分布式版本控制系统。

与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

什么是版本库?

版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”

git的作用

git就是管理我们这个版本库的管家,其主要作用, 保证项目代码在开发阶段, 任何代码都不会丢失. 而且可以快速获取任何阶段开发代码.

git和svn的区别

以前的版本控制入CVS,SVN等都是集中控制管理的,也就是有一个中央服务器,大家都把代码提交到中心节点,而git是分布式的版本控制工具,也就是说没有中央服务器,每个节点的地位平等。

什么是分布式?

分布式处理是将不同地点的,或具有不同功能的,或拥有不同数据的多台计算机通过通信网络连接起来,在控制系统的统一管理控制下,协调地完成大规模信息处理任务的计算机系统

二、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..tar.gz
cd git-2.9. make configure #提示错误没有configure时执行
./configure --prefix=/usr/local/git
make && make install

三、git基本使用

1、Git 工作区、暂存区和版本库(仓库)介绍

(1)工作区:就是你在电脑里能看到的目录。

(2)暂存区缓存区英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

暂存区是属于版本库中的一部分。

(3)版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。.git中的head/master是分支,是版本库。

2、git快速体验

(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~
HEAD^^, 前2个版本, HEAD~
HEAD^^^, 前3个版本, HEAD~

四、远程多人协作

 具体流程常用命令

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严格来说不是指向提交,而是指向mastermaster才是指向提交的,所以,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 | +
file changed, insertion(+)

⑤合并完成后,就可以放心地删除dev分支了:

$ git branch -d dev
Deleted branch dev (was fec145a).

使用git进行版本控制的更多相关文章

  1. Git分布式版本控制教程

    Git分布式版本控制Git 安装配置Linux&Unix平台 Debian/Ubuntu $ apt-get install git Fedora $ ) $ dnf and later) G ...

  2. Visual Studio Code 使用Git进行版本控制

    Visual Studio Code 使用Git进行版本控制 本来认为此类教程,肯定是满网飞了.今天首次使用VS Code的Git功能,翻遍了 所有中文教程,竟没有一个靠谱的.遂动笔写一篇. 请确保你 ...

  3. git分布式版本控制玩法

    git分布式版本控制玩法 Git distributed version control play github的配置安装步骤:1.下载git bash(从http://www.git-scm.com ...

  4. VSC 使用Git进行版本控制

    Visual Studio Code 使用Git进行版本控制 请确保你安装了最新的VS Code.http://code.visualstudio.com/ 请确保安装了最新版的Git.https:/ ...

  5. Git本地版本控制备忘

    首先git是一个版本控制工具,类似于SVN 笔记包括两部分,git本地版本控制和git远程协助 一.Git本地版本控制 以git windows版本msysgit为例,下载地址http://msysg ...

  6. 浅谈使用git进行版本控制

    小编在学习可视化的时候,接触到git,所以这里写一下关于GitHub的有关知识,写这个的目的还是巩固自己的学习,一方面可以提高自己,另一方面回头看一下,有什么更深层次的东西还可以再记录. 首先说一下版 ...

  7. 使用VSTS的Git进行版本控制(七)——管理仓库

    使用VSTS的Git进行版本控制(七)--管理仓库 在团队项目中创建Git repo管理项目的源代码.每个Git repo都有自己的权限和分支,可以与项目中的其他工作隔离开来. 任务1:从web门户创 ...

  8. 使用VSTS的Git进行版本控制(五)——从Team Services Portal管理分支

    使用VSTS的Git进行版本控制(五)--从Team Services Portal管理分支 任务1:创建新分支 1.登录Visual Studio Team Services账号 2.打开Code ...

  9. 使用VSTS的Git进行版本控制(四)——在Visual Studio中管理分支

    使用VSTS的Git进行版本控制(四)--在Visual Studio中管理分支 可以从web版Team Services Git repo 的Branches视图中管理工作.定制视图来跟踪最关注的分 ...

  10. 使用VSTS的Git进行版本控制(三)——评审历史记录

    使用VSTS的Git进行版本控制(三)--评审历史记录 Git使用存储在每个提交中的父引用信息来管理开发的完整历史记录.评审该提交历史记录,能够找出文件更改的时间,并确定代码版本之间的差异. Git使 ...

随机推荐

  1. unity UI如何开启(显示)或者关闭(隐藏)Panel界面最好?

    https://segmentfault.com/a/1190000012357091 unity UI如何开启(显示)或者关闭(隐藏)Panel界面,相信大家都是知道的,但是如何做最好呢? 可能大家 ...

  2. mysql事件调用存储过程总结

    第一次写事件调用存储过程,在网上找了一些资料,特此做下总结,巩固一下: 事件调用存储过程主要有三种: (1)创建事件马上执行,调用存储过程 CREATE EVENT if not exists Eve ...

  3. 介质共享型局域网中的介质访问控制(MAC)协议需要具体解决的3个问题,CSMA/CD介质访问控制的基本思想

    1,在某一时刻,那个节点可以发送数据 2,发送时是否会出现冲突 3,出现冲突时如何处理 CSMA/CD介质访问控制的基本思想:先监听,再发送.边发送,边监听,如发生冲突,则等待一段时间后再次发送

  4. Java的命名规范

    1.类名.接口名:首单词的第一个字母要大写.如果有多个单词,其他单词的首字母要大写. 2.包名:全部小写. 3.变量名.方法名:首单词的第一个字母小写.如果有多个单词,其他单词的首字母要大写. 4.常 ...

  5. VS2010 配置与调试

    一.VS2010项目属性配置 使用VS调试程序,出现错误:"无法启动程序"***\**.exe".系统找不到指定的文件".网上找来解决办法, 也未能解决,但这些 ...

  6. iptables 添加raw提高服务器性能之路

    前几天准备把线上一批机器添加iptables.于是梳理出几个需要通外网的端口,80,81等. 防火墙规则如下: #### filter table ########################## ...

  7. String 和 StringBuilder

    官方解释 String  String 类代表字符串.字符串是常量:它们的值在创建之后不能更改. StringBuilder 一个可变的字符序列. 疑问 字符串是常量:它们的值在创建之后不能更改.那 ...

  8. 2018-2019-2 网络对抗技术 20165228 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165228 Exp2 后门原理与实践 (1)例举你能想到的一个后门进入到你系统中的可能方式? 在使用盗版软件,盗版系统,甚至游戏外挂时,往往会让我们关闭杀毒 ...

  9. Golang微服务:Micro限流、熔断

    Wrapper Wrapper提供了一种包装机制,使得在执行某方法前先执行Wrapper,优点Filter的意思:因此可以在客户端和服务器做很多功能:熔断限流.Filter.Auth等. client ...

  10. Golang基本语法

    (1) 全局变量与局部变量 首先,得了解go代码块,也就是"{}",代码块外面访问不到代码块里面的变量. 在go语言里,变量民首写字母为大写则是全局变量,首写字母小写则是局部变量. ...