版本控制系统Git笔记

栏目: 编程工具 · 发布时间: 5年前

内容简介:Git 是一个开源的git官网git的官网:

git介绍

Git 是一个开源的 分布式版本控制系统 ,用于敏捷高效地处理任何或小或大的项目,它最初是由Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件并且它采用了 分布式版本库 的方式,不必服务器端软件支持。

git官网

git的官网: https://git-scm.com/

git的功能

Git作为一个版本控制工具,它具备的功能如下:

  • 协同修改 :多人可以并行不悖地修改服务器端的同一文件;
  • 数据备份 :可以保存文件或者目录的当前状态,也可以保存每一个提交过的历史状态;
  • 版本管理 :Git 采取了 文件系统快照 的方式,在保存每一个版本的文件信息的时候做到不保存重复数据,以节约存储空间,提高运行效率。
  • 权限控制 :对开发团队的人员进行权限控制,对团队开发者贡献的代码进行审核;
  • 历史记录 :可以查看修改人员、修改时间、修改内容、日志信息,可以将本地文件恢复到某一个历史状态;
  • 分支管理 :允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。

git的优势

  1. 大部分操作都在本地完成,不需要联网;
  2. 完整性保证;
  3. 尽可能添加数据而不是删除或修改数据;
  4. 分支操作非常快捷流畅;
  5. 与Linux命令完全兼容。

git的安装

Linux系统安装

1. 环境说明:使用的是Centos7系统,防火墙为关闭状态。

[root@moli_linux1 ~]$ rpm -qa centos-release
centos-release-7-5.1804.el7.centos.2.x86_64
[root@moli_linux1 ~]$ uname -a
Linux moli_linux1 3.10.0-862.6.3.el7.x86_64 #1 SMP Tue Jun 26 16:32:21 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@moli_linux1 ~]$ getenforce
Disabled
[root@moli_linux1 ~]$ systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

2. yum安装git

CentOS系统中自带了git包,可直接使用yum命令进行安装

[root@moli_linux1 ~]$ rpm -qa git
git-1.8.3.1-20.el7.x86_64 # 自带的git版本为1.8.3
[root@moli_linux1 ~]$ yum install -y git # 进行安装

3. 编译安装

如果觉得自带的git版本过低,需要安装较新版本的git软件,可以使用编译安装的方法。

首先,去github上下载源码包,地址: https://github.com/git/git/re...

版本控制系统Git笔记

访问即可看到多个版本的git包,这里我选择git.2.21.0版本的源码包,选择tar.gz格式,进行下载。

下载到CentOS系统后,进行编译安装:

# 安装依赖包
yum install curl-devel expat-devel gettext-devel  openssl-devel zlib-devel
# 卸载Yum安装的git
yum remove git
# 编译安装
tar -zxf git-2.21.0.tar.gz
cd git-2.21.0
make configure
./configure --prefix=/usr
make  
make install

编译成功后,输入 git --version ,有输出版本信息即表示成功。

[root@moli_linux1 ~]$ git --version
git version 2.21.0

window10安装

使用git之前的简单配置

Git软件提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。

定义的这些环境变量,决定了git在之后工作的各个环节的工作方式和行为。而存放这些环境变量的配置文件可以存在在三个地方:

  • /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
  • ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
  • 当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。

配置git

[root@moli_linux1 ~]$ git config --global user.name "mori" # 配置git的使用用户
[root@moli_linux1 ~]$ git config --global user.email "xxx@qq.com" # 配置用户邮箱
[root@moli_linux1 ~]$ git config --global color.ui true # 配置语法高亮
[root@moli_linux1 ~]$ git config --list # 查看git的配置
user.name=mori
user.email=xxx@qq.com
color.ui=true

生成的配置文件

[root@moli_linux1 ~]$ cat ~/.gitconfig 
[user]
    name = mori
    email = xxx@qq.com
[color]
    ui = true

说明:这里使用了--global选项,更改的配置为当前用户家目录的.gitconfig文件,之后所有的git项目都会使用这个配置文件的环境变量。

git基本概念

git的结构包括工作区、暂存区以及版本库。

工作区
暂存区
版本库
远程库

Git基本操作

1. 创建Git仓库

命令:

git init :初始化一个git仓库

git status :查看工作区,暂存区状态

# 创建目录
    mkdir git_test
    # 进入目录
    cd git_test
    # 初始化
    git init
    # 查看本地库状态
    git status
除了创建仓库外,还可以克隆一个仓库,使用命令 git clone url

选项说明:

url :Git仓库,可以克隆本地也可以克隆远程库,比如克隆996.icu项目到本地

git clone https://github.com/996icu/996.ICU.git

也可以将克隆下来的仓库改名

git clone https://github.com/996icu/996.ICU.git 996.icu

2. 添加文件到缓存区

命令:

git add [filename] :将工作区的“新建/修改”添加到暂存区。

选项说明:

filename:可选参数,指定文件名会添加这个文件到暂存区

touch README.md
git add README.md
git add . # 添加Git仓库的所有文件

3. 提交文件

命令:

git commit -m "commit message" [filename] :将暂存区的内容提交到Git仓库

-m选项是注释,提交内容时的说明。

git commit -m "首次提交,版本为1.0" README.md

如果不加 -m 选项,执行 git commit 会弹出vim编辑器让你进行编写注释,如果想跳过注释可直接敲:

git commit -a README.md

4. 查看历史记录

git在提交或者更新版本后,想版本回退,回顾提交历史便可以使用 git log 查看历史记录。

命令:

git log :查看Git仓库的提交历史

[root@moli_linux1 git_test]$ git log
commit 3afbcb6bf263261c4c57ef399f3e5f11127dded8 (HEAD -> master)
Author: mori <xxx@qq.com>
Date:   Thu Apr 25 15:28:22 2019 +0800

    修改了index.html文件

commit 779f37bbb3c81827b7ee17e3d30b01c7b3f849ac
Author: mori <xxx@qq.com>
Date:   Thu Apr 25 15:01:57 2019 +0800

    the first commit

可以使用命令 git log --pretty=oneline 查看简洁的历史记录

[root@moli_linux1 git_test]$ git log --pretty=oneline
3afbcb6bf263261c4c57ef399f3e5f11127dded8 (HEAD -> master) 修改了index.html文件
779f37bbb3c81827b7ee17e3d30b01c7b3f849ac the first commit

更加简洁的历史记录: git log --online

[root@moli_linux1 git_test]$ git log --oneline
3afbcb6 (HEAD -> master) 修改了index.html文件
779f37b the first commit

查看历史记录的另外一个命令: git reflog

[root@moli_linux1 git_test]$ git reflog
3afbcb6 (HEAD -> master) HEAD@{0}: commit: 修改了index.html文件
779f37b HEAD@{1}: commit (initial): the first commit

5. 版本的回滚前进

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

进行版本的前进后退使用命令: git reset [选项参数] ..

示例:

版本控制系统Git笔记

基于哈希字串进行版本前进后退:

git reset --hard 3afbcb6

基于 ^ 符号,只能进行后退,一个^表示后退一步,n个^后退n步:

git reset --hard HEAD^ # 向后退一个版本
git reset --hard HEAD^^ # 向后退两个版本

基于 ~ 符号,只能进行版本后退:

git reset --hard HEAD~n # n是数字,表示后退n步

git reset 命令除了 --hard 参数还有 --soft--mixed 参数,它们的区别如下:

--hard
--soft
--mixed

6. 标签使用

如果项目的版本到了一个特殊的阶段,并且你想以特殊的名字给这个版本快照而不是一串长长又难记字符串,那么就可以使用标签了,并且git也支持使用标签进行回滚。

命令:

git tag V1.0 # 为当前提交的内容打标签V1.0
git tag # 查看当前所有的标签
git show V1.0 # 查看V1.0标签的详细信息
git tag V1.1 -m "Version 1.1 release is test" # 创建带有说明信息的标签
git tag -d V1.0 # 删除标签

7. 删除文件

对于Git仓库的文件,文件的删除需要了解当前文件的状态。

  • 对于没有添加到暂存区的文件直接rm删除即可

已经提交到暂存区的数据,

git rm --cached filename
git rm -f filename

Git分支结构

什么是分支?简单来说就是:在版本控制过程中,使用多条线同时推进多个任务。

在Git中,初始化一个版本库之后,自身就会有一个master分支(也可以叫做主干)。实际开发中,master分支仅用于发布新版本,实际的开发等操作都在其他分支上,所以master应该保持稳定。

使用分支可以同时并行推进多个功能的开发,提高开发效率,各个分支在开发过程中,如果某个分支开发失败并不会对其他分支造成影响,失败的分支删除重新开始即可。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

机器学习

机器学习

周志华 / 清华大学出版社 / 2016-1-1 / 88.00元

机器学习是计算机科学与人工智能的重要分支领域. 本书作为该领域的入门教材,在内容上尽可能涵盖机器学习基础知识的各方面。 为了使尽可能多的读者通过本书对机器学习有所了解, 作者试图尽可能少地使用数学知识. 然而, 少量的概率、统计、代数、优化、逻辑知识似乎不可避免. 因此, 本书更适合大学三年级以上的理工科本科生和研究生, 以及具有类似背景的对机器学 习感兴趣的人士. 为方便读者, 本书附录给出了一......一起来看看 《机器学习》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试