Git 是一种分布式的项目版本控制管理工具,所采取的概念是 “去中心化” ,每个开发人员都有自己的本地代码仓库,同时为同一个远程仓库服务。有了 Git 就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态。就算乱来一气将项目中的文件删删改改,也照样可以恢复到之前的样子,且额外增加的工作量微乎其微。
通过 Git 可以比较本地代码文件的变化细节,查出最后是谁修改了哪个地方的代码,从而找到导致问题出现的原因,也可以查出是谁在哪个时间点报告了功能缺陷等等。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的分布式版本控制系统。
与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持(注:这得分是用什么样的服务端,使用http协议或者git协议等不太一样。并且在push和pull的时候和服务器端还是有交互的),使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。
同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码。
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds )不得不吸取教训,只有开发一套属于自己的版本控制系统才不至于重蹈覆辙。他们对新的系统制订了若干目标:
自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。它的速度飞快,极其适合管理大项目,它还有着令人难以置信的非线性分支管理系统,可以应付各种复杂的项目开发需求。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。
打开 [git官网] https://git-scm.com/,下载git对应操作系统的版本。
若官网下载太慢,可以使用淘宝镜像下载:http://npm.taobao.org/mirrors/git-for-windows/
最早Git是在Linux上开发的,很长一段时间内,Git只能在Linux/Unix系统上运行。随着Git的使用逐渐普及,一些开发者也慢慢将Git移植到了Windows平台上。目前Git已经发展为可以在 Windows/macOS/Linux/Unix 上运行的跨平台工具。
下载对应的版本即可安装!
安装:无脑下一步即可!安装完毕就可以使用了!
安装成功后在开始菜单中会有Git项,菜单下有3个程序:任意文件夹下鼠标右键也可以看到对应的程序:
**Git Bash:**Unix与Linux风格的命令行,使用最多,推荐最多
**Git CMD:**Windows风格的命令行
Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令
以命令行操作为例,使用 Bash 命令行来操作 Git。
Git 工具主要采用 git
命令来指引操作。
安装完 Git 之后,需要进行一次初始化的配置,Git 使用 git config
命令来完成。此命令的作用是配置 Git 的相关环境参数。
登录的用户名是你想要克隆、下载到HTTPS / SSH 地址上所属的某个代码托管平台。
$git config --global user.name "xxx" #用户名
$git config --global user.email "[email protected]" #邮箱
当安装Git后首先要做的事情是设置你的用户名称和e-mail地址。这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起永久纳入历史记录。
如果你传递了
--global
选项,Git 将总是会使用该信息来处理你在系统中所做的一切操作。
如果你希望在一个特定的项目中使用不同的名称或 e-mail 地址,你可以在该项目中运行该命令而不要--global
选项。总之–global为全局配置,若舍弃 --global 则表示当前项目的
.git
目录作为独立配置。
$git config --global --unset user.name #用户名
$git config --global --unset user.email #邮箱
Git 提供了 git config
指令来配置或读取相应的工作环境变量,而正是这些环境变量决定了 Git 在各个环节的具体工作方式和行为。
这些变量可以存放在以下三个不同的地方:
\etc\gitconfig
:系统中对所有用户都普遍适用的配置。
--system
系统级。git config
指令时添加 --system
选项,读写的就是这个文件。
C:\Users\Administrator\.gitconfig
:用户目录下的配置文件,只适用于当前系统用户的 git 项目。
--global
全局git config
指令时添加 --global
选项,读写的就是这个文件。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ioOBLzVf-1657784949840)(git-media\Git 相关配置.png)]
.git/config
:当前项目的.git
目录下的配置文件。仅仅只对当前项目有效。
这三个配置文件对应了 GIt 中所展示的三种级别的权限 system >> global >> .git
。
注意:每一个级别的配置都会覆盖上层的相同配置。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IOPxCgRz-1657784949840)(git-media/Git 配置权限级别.png)]
$git config -l|[--list]
$git config --local --list
$git config --system --list
$git config --global --list
Git 并不会在你输入部分命令时自动推断出你想要的命令。如果不想每次都输入完整的 Git 命令,可以通过 git config
来轻松为每一个命令设置一个别名。
$git config --global alias.[别名] ''
注意:配别名的 git
命令不能带有 git
,且需以 '' / ""
单双引号包裹。
也可以使用 vim
来编辑指定目录的 .gitconfig
代表不同级别的权限:
etc/config
:–systemC:\\User\Administrator\\.gitconfig
: --global.git/config
:当前项目级vim .git/config
#用户信息配置
[user]
username = xxx
email = xxx
#核心配置
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
#git 命令别名配置
[alias]
logAll = log --oneline --decorate --graph --all
示例:
#源完整命令:git log --oneline --decorate --graph --all
#设置别名
$git config --global alias.log-d-all 'log --oneline --decorate --graph --all'
指令 | 描述 |
---|---|
cd | 改变目录 |
pwd | 显示当前所在的目录路径 |
ls / ll | 都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细 |
touch xx | 在当前目录下新建一个 xx 文件 |
rm xx | 删除 xx 文件 |
mkdir xx | 新建 xx 文件夹。 |
rm -r xx | 删除 xx 文件夹 |
rm -rf / | 切勿在Linux中尝试!删除电脑中全部文件! |
mv xx src yy | 移动文件 xx 到 src 目录下的 yy。必须保证 xx 文件和目标文件夹 src 在同一目录下。 |
mv 源文件 重命名文件 | 重命名 |
cat xx | 查看 xx 文件的内容 |
reset | 重新初始化终端/清屏。 |
clear | 清屏 |
history | 查看执行过的命令历史记录 |
help | 帮助 |
exit | 退出 |
# | 注释 |
vim xx | 编辑 xx 文件 i :插入模式,文件的编辑操作 esc 之后 : 键:执行相关命令 q! 强制退出 wq 保存写入并退出 set nu 设置行号 |
echo ‘xxx’ | 向控制台输出 xxx |
echo ‘xxx’ > info.txt | 向 info.txt 文件写入 xxx 文本内容 |
echo ‘xxx’ >> info.txt | 向 info.txt 文件支架 xxx 文本内容 |
find 目录名 | 将对应的目录及子目录输出到控制台 |
find 目录名 -type f | 将对应目录下的文件输出到控制台 |
| | 管道符。表示将前一个命令的输出值传递给后一个命令进行处理 |
想要搭建 Git 服务器,需要Linux 最基本的网络环境。
同时,可以使用 yum
命令来下载 SVN 第三方资源包。yum
是 Linux 系统自带的用来下载第三方资源包的命令工具,相当于 Node.js 的 npm
工具。
搭建步骤:
前提:配置好网络环境。
1、下载git
第三方资源包
$ yum install git -y
2、创建 Git 资源的存储目录
先创建一个 目录用来存储 Git 资源。
$ mkdir xxx
$ cd /xxx/
3、初始化 Git 仓库
切换到存储 Git资源的目录,在此目录中初始化 Git 的基本配置信息。
$ git init --bare xxx.git
4、配置用户。
Git 服务与 SVN 服务不同,Git 服务规定可访问的用户只能是当前的系统用户、所以要先添加一个系统用户,为其设置好密码。
添加系统用户:
$ useradd <name>
用户组命名默认为当前添加的用户名。例如 : blue : blue
设置密码:
$ passwd <name>
由于添加的是系统用户,如果不对此用户增加权限,那么此用户就可以登录并查看到当前系统的所有文件,为了避免用户权限乱套,需要对 此用户进行权限限制,禁止此用户登录到服务器中。
5、修改 Git 目录所有者
在创建最初,Git 目录是的所属者是 root 用户,需要将 Git 目录的所属者修改为 当前新建的用户。表示此 Git 目录是 此用户所属文件。
修改目录所属用户。
$chown -R 用户名:用户组 xxx.git
参数:
6、正式导入 Git 资源到本地。
配置好以上步骤之后,使用 Git 安装时 自带的 Git Bash Here
工具,输入以下格式的指令即可获取指定服务器地址下的 Git 资源。
如:
$git clone 用户名@服务器IP地址:/目录/xxx.git 本地存储目录
一切 Git 的应用如常。