Git 介绍&使用


Git 介绍

什么是 Git ?

Git 是分布式版本控制系统,同一个 Git 仓库,可以分布到不同的机器上。

其原理是首先找一台电脑充当服务器的角色,每天 24 小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。可以自己搭建这台服务器,也可以使用 GitHub 网站。


Git 起源

Linus 在 1991 年创建了开源的 Linux,从此,Linux 系统不断发展,已经成为最大的服务器系统软件了。Linus 虽然创建了 Linux,但 Linux 的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为 Linux 编写代码,那 Linux 的代码是如何管理的呢?

事实是,在 2002 年以前,世界各地的志愿者把源代码文件通过 diff 的方式发给 Linus,然后由 Linus 本人通过手工方式合并代码!你也许会想,为什么 Linus 不把 Linux 代码放到版本控制系统里呢?不是有 CVS 、 SVN 这些免费的版本控制系统吗?因为 Linus 坚定地反对 CVS 和 SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。也有一些商用的版本控制系统,虽然比 CVS、SVN 好用,但那是付费的,和 Linux 的开源精神不符。

到了 2002 年,Linux 系统已经发展了十年了,代码库之大让 Linus 很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是 Linus 选择了一个商业的版本控制系统 BitKeeper。BitKeeper 的东家 BitMover 公司出于人道主义精神,授权 Linux 社区免费使用这个版本控制系统。但安定团结的大好局面在 2005 年就被打破了,原因是 Linux 社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发 Samba 的 Andrew 试图破解 BitKeeper 的协议(这么干的其实也不只他一个),被 BitMover 公司发现了(监控工作做得不错!),于是 BitMover 公司怒了,要收回 Linux 社区的免费使用权。Linus 可以向 BitMover 公司道个歉,保证以后严格管教弟兄们。嗯,这是不可能的。

实际情况是这样的: Linus 花了两周时间自己用 C 写了一个分布式版本控制系统,这就是 Git!一个月之内,Linux 系统的源码已经由 Git 管理了!牛是怎么定义的呢?大家可以体会一下。Git 迅速成为最流行的分布式版本控制系统,尤其是 2008 年,GitHub 网站上线了,它为开源项目免费提供 Git 存储,无数开源项目开始迁移至 GitHub,包括 jQuery,PHP,Ruby 等等。历史就是这么偶然,如果不是当年 BitMover 公司威胁 Linux 社区,可能现在我们就没有免费而超级好用的 Git 了。


Git 安装

Linux

sudo apt-get install git  # ubuntu
yum install git  # centos

Windows

1)登录官网下载安装包:官网 https://git-scm.com/download/win

image

2)下载完成后双击安装,如下图所示:

image

双击 exe 文件,一路 next 即可。

3)配置环境变量:将 Git 的 bin 目录 添加到环境变量。

验证是否安装成功:

git --version

4)配置 git:

git config --global user.email "email@example.com"
git config --global user.name "Your Name"

Git 使用

image


远程仓库

1)创建 Github 账号

本地 Git 仓库和 GitHub 仓库之间的传输是通过 SSH 加密的。

step 1:创建项目的 SSH Key(本地执行)

ssh-keygen -t rsa -C "youremail@example.com"

创建完成后,在用户主目录里找到 .ssh 目录,里面有 id_rsa 和 id_rsa.pub 两个文件,这两个就是 SSH Key 的秘钥对,id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥,可以放心地告诉任何人。

step 2:登录 GitHub 官网注册或登录账号,然后打开“settings”的“SSH Keys”页面,点“New SSH Key”,填上任意 Title,在 Key 文本框里粘贴 id_rsa.pub 文件的内容后点击“Add Key”,可以看到已经添加的 Key

2)创建远程库

登录 GitHub,在右上角找到“new repository”按钮,创建一个新的仓库。

3)从远程仓库克隆

将 GitHub 上的项目,克隆到本地一份(初始化本地仓库):

git clone git@github.com:账号名/项目名.git  # SSH方式
# 也可以使用HTTPS方式

4)与远程库交互

# 在本地仓库目录下,获取远程仓库的项目(更新)
git pull

# 在本地仓库目录下,提交项目到远程仓库(更新)
git push

提示:每次提交前,需要先获取,解决冲突后再次提交。


本地仓库的使用

克隆代码

# 自动创建本地仓库
git clone 代码仓库url

手动创建本地仓库

创建空目录:

mkdir test7
cd test7

目录结构图如下:

image

在目录下创建本地仓库:

git init

创建成功后,目录结构如下图:

image

版本库就是一个目录,这个目录里面的所有文件都可以被 Git 管理起来,每个文件的修改、删除,Git 都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。


文件管理

本地仓库分为三部分:工作区、暂存区、仓库区,其中暂存区、仓库区是版本库部分。

三个部分的操作及命令如下图:

image

工作区与暂存区

使用 IDE 打开目录,创建项目,将文件添加到暂存区:

git add 文件1 文件2 ...
git add 目录

将暂时区的内容恢复至工作区:

git checkout -- 文件名

查看暂存区的状态:

git status

暂存区与仓库区

将暂存区的记录添加到仓库区:

git commit -m '本次提交的说明信息'

查看仓库区的历史:

# 当前版本的历史版本
git log
# 简略版显示
git log --pretty=oneline
# 历史命令
git reflog

在 Git 中,用 HEAD 表示当前版本,也就是最新提交的版本,而上一个版本是 HEAD^,上上一个版本就是 HEAD^^,当然往上 100 个版本写 100个^ 比较容易数不过来,所以可以写成 HEAD~100。

对比工作区和仓库区中某版本某文件的不同:

git diff HEAD -- 文件名

回退历史版本到暂存区:

git reset HEAD^或版本号

删除文件

# 依次执行如下命令
rm 文件名
git rm 文件名
git commit -m '说明信息'

分支管理

创建分支

# 创建dev分支
git branch dev

# 切换到dev分支
git checkout dev

# 查看分支状态
git branch

image

合并分支

# 必须处于master分支,才能merge
git checkout master
# 将dev分支的成果合并到master
git merge dev

image

# 删除dev分支
git branch -d dev

image

posted @ 2021-04-28 00:19  Juno3550  阅读(631)  评论(0编辑  收藏  举报