Git详解及 github与gitlab使用

本文详细介绍了Git的版本控制概念,包括本地、集中化和分布式系统的比较。重点讲解了Git的安装、配置、基本操作,如创建、添加、删除文件,查看历史记录和重命名。同时,文章涵盖了Git分支管理和解决合并冲突的方法。此外,还讨论了在Windows环境下使用Git,以及GitLab和GitHub的使用,包括安装配置、创建项目、添加SSH密钥、推送和拉取代码。文章还提到了如何在PyCharm中集成GitHub和GitLab。
摘要由CSDN通过智能技术生成

Git详解及 github与gitlab使用

1.1 关于版本控制

开始之前先看一个没有版本控制的例子

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CJTyKmHD-1591973109110)(https://i.loli.net/2019/05/12/5cd787de86e60.jpg)]

1.1.1 本地版本控制

本地版本控制系统 许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。这么做唯一的 好处就是简单,但是特别容易犯错。有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意想外的文件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IJPOxdvg-1591973109112)(assets/1190037-20171130170717667-909081145.png)]

1.1.2 集中化的版本控制系统

如何让在不同系统上的开发者协同工作?于是,集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS)应运而生。这类系统,诸如 CVS、Subversion 以及Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ikn7uP38-1591973109117)(assets/1190037-20171130170728011-1466806727.png)]

1.1.3 分布式版本控制系统

​ 在这类系统中,像Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uNJmbHmr-1591973109122)(assets/1190037-20171130170739729-1366084886.png)]

1.2 Git简介

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jy6Hxkdy-1591973109125)(assets/1190037-20171130170749808-269525315.png)]

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

​ git是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。

Git 官方中文手册 https://git-scm.com/book/zh/v2

1.2.1 Git历史

自2002年开始,林纳斯·托瓦兹决定使用BitKeeper作为Linux内核主要的版本控制系统用以维护代码。因为BitKeeper为专有软件,这个决定在社区中长期遭受质疑。在Linux社区中,特别是理查德·斯托曼与自由软件基金会的成员,主张应该使用开放源代码的软件来作为Linux核心的版本控制系统。林纳斯·托瓦兹曾考虑过采用现成软件作为版本控制系统(例如Monotone),但这些软件都存在一些问题,特别是性能不佳。现成的方案,如CVS的架构,受到林纳斯·托瓦兹的批评。

2005年,安德鲁·垂鸠写了一个简单程序,可以连接BitKeeper的存储库,BitKeeper著作权拥有者拉里·麦沃伊认为安德鲁·垂鸠对BitKeeper内部使用的协议进行逆向工程,决定收回无偿使用BitKeeper的授权。Linux内核开发团队与BitMover公司进行蹉商,但无法解决他们之间的歧见。林纳斯·托瓦兹决定自行开发版本控制系统替代BitKeeper,以十天的时间,编写出第一个git版本

1.3 安装git

1.3.1 环境说明

[root@gitlab ~]# rpm -qa centos-release
centos-release-7-4.1708.el7.centos.x86_64
[root@gitlab ~]# uname -a
Linux gitlab 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@gitlab ~]# getenforce 
Disabled
[root@gitlab ~]# 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)

# 本文使用的linux系统均为该系统

# 本文使用的windows系统为 Microsoft Windows [版本 10.0.15063]

1.3.2 Yum安装Git

# centos 自带git

[root@gitlab ~]# rpm -qa git
git-1.8.3.1-11.el7.x86_64

# 安装方法

yum install git -y

1.3.3 编译安装

编译安装可以安装较新版本的git

Git下载地址: https://github.com/git/git/releases

# 安装依赖关系
yum install curl-devel expat-devel gettext-devel  openssl-devel zlib-devel
# 编译安装
tar -zxf git-2.0.0.tar.gz
cd git-2.0.0
make configure
./configure --prefix=/usr
make  
make install  

1.4 初次运行 Git 前的配置

1.4.1 配置git

命令集

git config --global user.name "username"  #配置git使用用户
git config --global user.email "email@mail.com"  #配置git使用邮箱
git config --global color.ui true  #语法高亮
git config --list # 查看全局配置

配置过程

[root@gitlab ~]# git config --global user.name "tigerfive"  #配置git使用用户
[root@gitlab ~]# git config --global user.email "tigerfive@aliyun.com"  #配置git使用邮箱
[root@gitlab ~]# git config --global color.ui true  #语法高亮
[root@gitlab ~]# git config --list # 查看全局配置
user.name=tigerfive
user.mail=tigerfive@aliyun.com
color.ui=true

生成的配置文件

[root@gitlab ~]# cd
[root@gitlab ~]# cat .gitconfig 
[user]
        name = tigerfive
        email = tigerfive@aliyun.com
[color]
    ui = true

1.4.2 获取帮助

使用Git时需要获取帮助,有三种方法可以找到Git命令的使用手册:

git help <verb>
git <verb> --help
man git-<verb>

例如,要想获得配置命令的手册,执行

git help config

1.5 获取 Git 仓库*(初始化仓库)*

# 创建目录
mkdir git_data
# 进入目录
cd git_data/
# 初始化
git init
# 查看工作区状态
git status

操作过程

[root@gitlab ~]# mkdir -p /data/git_data
[root@gitlab ~]# cd /data/git_data
[root@gitlab git_data]# git init
初始化空的 Git 版本库于 /data/git_data/.git/
Initialized empty Git repository in /data/git_data/.git/
[root@gitlab git_data]# git status
# 位于分支 master
#
# 初始提交
#
无文件要提交(创建/拷贝文件并使用 "git add" 建立跟踪)

# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)

1.6 Git命令常规操作

常用命令说明

命令 命令说明
add 添加文件内容至索引
bisect 通过二分查找定位引入 bug 的变更
branch 列出、创建或删除分支
checkout 检出一个分支或路径到工作区
clone 克隆一个版本库到一个新目录
commit 记录变更到版本库
diff 显示提交之间、提交和工作区之间等的差异
fetch 从另外一个版本库下载对象和引用
grep 输出和模式匹配的行
init 创建一个空的
Git 版本库或重新初始化一个已存在的版本库
log 显示提交日志
merge 合并两个或更多开发历史
mv 移动或重命名一个文件、目录或符号链接
pull 获取并合并另外的版本库或一个本地分支
push 更新远程引用和相关的对象
rebase 本地提交转移至更新后的上游分支中
reset 重置当前HEAD到指定状态
rm 从工作区和索引中删除文件
show 显示各种类型的对象
status 显示工作区状态
tag 创建、列出、删除或校验一个GPG签名的 tag 对象

常用操作示意图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aGl4VLZY-1591973109129)(assets/1190037-20171130170959948-2117269594.png)]

文件的状态变化周期

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hiGXi5Pa-1591973109130)(assets/1190037-20171130171009651-1964332055.png)]

1.6.1 创建文件

[root@gitlab git_data]# touch README
[root@gitlab git_data]# git status
# 位于分支 master
#
# 初始提交
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#    README
提交为空,但是存在尚未跟踪的文件࿰
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值