Git 使用教程

Git 使用教程


Git 初识

Git 历史

同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码。到 2005 年的时候,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds )不得不吸取教训,只有开发一套属于自己的版本控制系统才不至于重蹈覆辙。他们对新的系统订了若干目标:

若干目标:
• 速度 • 简单的设计 • 对非线性开发模式的强力支持(允许上千个并行开发的分支) • 完全分布式 • 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)

Git 与 svn 对比

SVN 介绍

SVN集中式版本控制系统 ,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器那里得到最新的版本,然后干活。干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就郁闷了。下图就是标准的集中式版本控制工具管理方式:

集中管理方式优缺点:

优点: 开发人员在一定程度上看到其他开发人员在干什么,而管理员也可以很轻松掌握每个人的开发权限。
缺点: 1、服务器单点故障问题。2、容错性差。

Git 介绍

Git分布式版本控制系统 ,那么它是没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了 文件 A ,其他人也在电脑上改了 文件 A 。这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。下图就是分布式版本控制工具管理方式:

Git 工作流程:
1、从远程仓库中克隆 Git 资源作为本地仓库。 2、从本地仓库中 CheckOut 代码然后进行代码修改。 3、在提交前先将代码提交到暂存区。 4、提交修改。提交到本地仓库。本地仓库中保存修改的各个历史版本。 5、在修改完成后,需要和团队成员共享代码时,可以将代码 push 到远程仓库。

下图展示了 Git 的工作流程:

Git 的下载安装

访问官网: www.git-scm.com/download/ 选择 相应操作系统 下载。下载好之后,安装即可【建议: 安装的时候一直点 Next 即可,直到完成,不必去改安装目录】。安装完成之后,点击鼠标右键会出现 Git GUI HereGit Bash Here ,如下图所示:

当我装上了 Git 之后,发现其实并不是特别好用。此时就要装一个更好操作 Git 的软件 TortoiseGit ,这是 TortoiseGit 的官网: https://tortoisegit.org/download/ ,下载安装即可。安装时注意以下两项,如下图:


安装完成后,点击鼠标右键,就可看到新增了 三项功能 ,如下图:

安装后发现,全部都是英文的,好像有点看不懂。没关系,汉化一下就可以了。汉化包自行搜索或者联系我。汉化完成后,点击右键,选择 TortoiseGit --> settings 就进入到了以下界面,选择即可。如下图:

完成之后,界面的所有文字就都是中文的了。接下来介绍 Git 的使用。

Git 的使用

Git 命令汇总

1
2
3
4
5
6
7
8
9
10
11
12
# 查看 Git 版本
git --version

# 初始化一个本地仓库
git init

# 生成密钥对
ssh-keygen -t rsa -C "Jack@qq.com"
# 参数含义:
# -t 指定密钥类型,默认是 rsa ,可以省略。
# -C 设置注释文字,比如邮箱。
# -f 指定密钥文件存储文件名。

创建版本库

什么是版本库

版本库又名 仓库 ,英文名 repository 。可以简单理解成一个目录,这个目录里面的所有文件都可以被 Git 管理起来,每个文件的修改、删除,Git 都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。由于 Git 是分布式版本管理工具,所以 Git 在不需要联网的情况下也具有完整的版本管理能力。

版本库的创建

创建一个版本库非常简单,可以使用 Git Bash 也可以使用 TortoiseGit ,还可以使用 Git GUI ,这三种方式都可以创建一个版本库。接下来就开始介绍如何创建一个版本库。第一步: 选择一个合适的地方,创建一个空目录,如:在桌面。如下图:

第二步: 在版本库创建好之后,在版本库目录下创建一个 本地仓库 ,如下图:



到这里为止,版本库就创建好了。注意一下: 这里的版本库指的是本地版本库,仓库也是本地仓库。

各种概念介绍

本地版本库: .git 文件夹 就叫做本地版本库 。
工作目录: 包含 .git 的那个目录就叫做工作目录,如 repo_1
工作区: 包含本地仓库的目录就是工作区。如 Repositories

操作版本库

向本地仓库添加文件

第一步:repo_1 目录下添加一个文件 hello.txt ,然后使用 TortoiseGit 中的 add 加入到暂存区。此时的 hello.txt 并没有添加到本地仓库,如下图:

第二步: 提交到本地仓库。在 repo_1 目录下空白处点击鼠标右键,选择 Git commit->master ,然后出现如下界面:

提交成功后出现一个弹窗,选择关闭即可。此时 hello.txt 就加入到了本地版本库,效果如下图:

第三步: 在添加完文件之后,我们查看一下本地仓库【在 repo_1 目录下 点击右键:选择 TortoiseGit-->Repo-browser 】如下图:

向本地仓库修改文件

通过上图我们发现,结果只有 hello.txt 。因为我们只添加了这一个文件,所以只有这么一个文件。现在我们修改一下这个文件里面的内容,随便修改就行。修改完之后进行第二次提交。提交参考 第二步 【Git 可以不需要添加到暂存区就可以直接提交】。提交完成之后再次修改文件内容,然后再次提交。这个时候我们就有版本了。就可以进行 第四步: 查看版本信息。那么如何来查看呢?在 repo_1 目录下 点击右键 TortoiseGit-->Show log 即可查看到各个版本。如下图:

那我们如何知道 第二次提交第三次提交 修改了什么内容呢?别急,参考下面图解:





向本地仓库删除文件

如果我们把 hello.txt 误删了怎么办?没关系,点击右键选择: TortoiseGit-->Revert... 即可把误删了的文件给还原回来。如果 TortoiseGit 汉化了的话,那么你会看到 还原 ,而不是 Revert…这里要注意: 如果 hello.txt 文件修改了没有提交,那么此时删除了,再次还原的话,修改的内容就没了。因为还原操作是从本地仓库找到文件还原回来,所以修改的内容就没有了。还原也有下面一种操作,点击右键选择: Git Sync... ,如下图:

如果我们想把 hello.txt 从版本库里面删除 ,但又 不想删除本地 的 hello.txt ,又该怎么办呢?这么办,如下图:

如果我们就是想删除 hello.txt ,且本地也不保存,如何做?简单,只要本地删除 hello.txt ,然后 commit 提交一下,这样就把这个文件从本地删除了,且版本库也没有了这个文件。

提交工程代码

如何去提交我们的代码呢?以为一个工程中,有些文件夹是不需要提交到本地仓库的,例如 .diea 文件夹out 文件夹 ,那我们该如何忽略它们呢?这么干。第一步: 把整个项目添加到 暂存区 ,如下图:

第二步: 在添加到暂存区之后,我们进入到 HelloProject ,选中需要忽略的文件或文件夹,然后右键,如下图:

第三步: 选中忽略方式,我们选择递归忽略,如下图:

第四步: 查看 HelloProject 工程,并查看 .gitignore 文件,如下图:


第五步: 提交到本地仓库,并进行仓库查看,如下图:

添加远程仓库

要使用远程仓库的话,必须要有 GitHub 账号 。当然,码云账号 也行,都是同类型的产品。本教程使用 GitHub 为例(GitHub 知名度高嘛)。首先我们得注册账号并新建远程仓库,详情参考:GitHub 账号注册 新建仓库如下图:

推送到远程仓库

那我们有了远程仓库之后,我们就要把 本地仓库 推送到 远程仓库 。如何推送呢?别急,先介绍下列概念。

Github 支持两种同步方式 HTTPSSSH*如果使用 HTTPS * ,那就很简单,基本不需要配置就可以使用。但是每次提交代码和下载代码时都需要输入用户名和密码,很麻烦。如果使用 SSH 方式 ,就需要 客户端先生成一个密钥对 ,即一个公钥一个私钥。然后还需要把公钥放到 GitHub 的服务器上。接下来先看 SSH 方式。

SSH 方式

SSHSecure Shell(安全外壳协议) 的缩写,由 IETF 的网络小组(Network Working Group)所制定。SSH 是目前较可靠、专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。使用 SSH 协议通信时,推荐使用基于密钥的验证方式。你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到 SSH 服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙, 然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密 质询(challenge) 并把它发送给客户端软件。客户端软件收到 质询 之后就可以用你的私人密匙解密再把它发送给服务器。

创建 SSH 密钥

repo_1 目录下点击右键,选择 Git Bash Here ,相关操作如下图:


以下是我的公钥,我们需要把公钥复制出来,然后去 GitHub 进行相关操作:

id_rsa.pub
1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuKASZWC4eMblBf0Pcqrvp9xjqLH+bOp5ogVLi01HwrCnD79bp/VtfyOpeGr3NLRgZzImHvms532c+jNbzFFoDdFGyNyis4l01eudE4wRdzcJ6cxhrMVd0l1VK7mc4hwE3jocRleiSJBE0J3hrxkPGpcHco6u2wW8majmuk2FLfvEgcOh0xKT3N9DQsecIx6cCtIJu8Krr7IdVJvNBB1v9AzNb4lwjNkLzBDJB0OOKF21a12wJo+WFhMqJkf5ktAU8TthBB51/NHTxDyOD5gBFIhVtesow0hQhZmdO84LC4b+KJIGIM+i5MlFB3GeEmjhYF2BvMmcXfzJdPC9UZx5T guoshizhan@guoshizhan

复制好自己的公钥,然后去 GitHub 网站,点击自己头像 ,选择 settings ,此时进入到另一个页面,选择左侧的 SSH and GPA keys ,如下图:

点击 add SSH key ,然后验证一下 GitHub 账户的密码,这样就添加成功了。这样做的 目的就是: 不需要输入账号密码,也可以和 GitHub 服务器进行通信,也可以保证通信的安全可靠。虽然生成密钥及配置有点麻烦,但是后面操作的时候就翻方便多了。而不是像 HTTPS 那样了,每操作一次,就输入一次账号密码,头都大了。成功添加 SSH key 如下图:

推送到远程仓库

第一种方式:命令行。repo_1 目录下点击右键,选择 Git Bash Here ,相关操作如下图:



TIPS: origin 是个别名,代表 远程仓库 ,你也可以叫 aaa 或者其他的名字,都行,无所谓的。

第二种方式:TortoiseGit 图形界面方式。repo_1 目录下点击右键,选择 Git Sync... ,相关操作如下图:






接下来介绍 HTTPS 通信方式,通过此方式推送到远程仓库。

HTTPS 方式

在本地仓库新建 https.txt 文件,然后添加到本地仓库。这样做是为了区分是否推送成功。首先: 复制 HTTPS 连接,如下图:

接着:repo_1 目录下点击右键,选择 Git Sync... ,相关操作如下图:






克隆远程仓库到本地

第一种方式:命令行。repo_1 目录下点击右键,选择 Git Bash Here ,相关操作如下图:

TIPS: 克隆下来的代码和远程仓库是一模一样的,提交次数、修改信息等等都可以查看。

第二种方式:TortoiseGit 图形界面方式。Repositories 目录下新建 test 文件夹 ,然后进入文件夹,点击鼠标右键,选择 Git clone【提前复制好远程仓库 HTTPS 连接或者 SSH 连接】 如下图:


推送修改文件和拉取最新文件

推送修改文件

如果我们在本地仓库新建了一个 XYZ.txt 文件,并把这个文件添加到本地版本库,即本地仓库。那么远程仓库是没有这个文件的,我们应该把我们的修改提交到远程仓库,如何做?这里就用文字描述了,就不上图片了。步骤: 点击右键 –> Git Sync... –> push ,等待推送完成即可。完成之后去远程仓库查看,就发现多了 XYZ.txt 文件。这里要注意:推送的时候要选择对应的远程仓库,别推送错了。其次,建议使用 SSH 方式,使用 HTTPS 方式输账号密码好烦,软件好像没有记忆功能,我太难了。最后说一下,以为我是用的是英文版的 TortoiseGit ,所以都是 Git Sync…push 等等之类的,他们对应的中文是 同步推送,只要看的懂就行了,不行就查一下嘛,问题不大。

拉取最新文件

加入别人推送了最新的代码,我们应该如何把它拉取到本地呢?仍然是文字教程,就不上图了。在你的本地仓库下点击右键,Git Sync… ,然后选择左侧的 pull 。 注意:远程仓库地址要选好,别拉取错了。拉取完成之后,本地仓库就是最新的了。

冲突问题

冲突问题的产生: A 程序员修改了 aa.txt 文件,并推送到了远程仓库。然而,在 A 程序员推送到远程仓库之前,B 程序员也修改了 aa.txt 文件,B 程序员修改完之后,A 程序员已经把代码推送到了远程仓库。但是,此时的 B 程序员也想推送到远程仓库,但是发现报错了,推送不了了。B 程序员想拉取远程仓库代码,拉取也不行了。这就是冲突。冲突产生的原因: 同时修改同一个文件,然后推送后导致本地仓库和远程仓库不一致。解决办法:手动解决,只能自己去决定采用 A 程序员修改的还是 B 程序员修改的。

此处都是文字描述,不好参照。限于时间的关系,只能这样了,有时间的话,我会重新给这一部分加上图片描述。

搭建私有 Git 服务器

远程仓库实际上和本地仓库没啥不同,纯粹为了 7x24 小时开机并交换大家的修改。GitHub 就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给 GitHub 交保护费,那就只能自己搭建一台 Git 服务器作为私有仓库使用。

需要的工具:

1、一台 Linux 虚拟主机或者云主机
2、远程连接工具(云主机需要,虚拟机可用可不用) 推荐:SecureCRT

搭建步骤

第一步: 安装 C 语言环境:

1
yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel gcc cc

第二步: 发送 git 压缩包到服务器,git-2.5.0 压缩包下载 步骤如下图:

获取压缩包路径
开启 ftp 连接
发送成功
传输之后的位置

接下来的内容我就不再写了,直接给个压缩包,里面 软件和文字版教程 都有,点击右侧下载即可。 git 所有资料

  

📚 本站推荐文章
  👉 从 0 开始搭建 Hexo 博客
  👉 计算机网络入门教程
  👉 数据结构入门
  👉 算法入门
  👉 IDEA 入门教程

可在评论区留言哦

一言句子获取中...

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×