参考内容:
ubuntu20.04配置git_良月123的博客-CSDN博客_ubuntu配置git
目录
什么是版本控制
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
实现跨区域多人协同开发
追踪和记载一个或者多个文件的历史记录
组织和保护你的源代码和文档
统计工作量
并行开发、提高开发效率
跟踪记录整个软件的开发过程
减轻开发人员的负担,节省时间,同时降低人为错误
简单说就是用于管理多人协同开发项目的技术。
Git是分布式版本控制工具
Git是目前世界上最先进的分布式版本控制系统。
特点:所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。
优缺点:由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。
下载Git
选择所需版本,打开终端输入对应命令,进行下载。
下载完成后:
$ git
配置Git
安装Git后,首先要做的事情是设置自己的用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远地嵌入到了我们的提交中:
$ git config --global user.name "填写名称"
$ git config --global user.email "填写邮箱"
对每一个项目只需要做一次这个设置。
如果你传递了--global选项,则Git将总是会使用该信息来处理你在系统中所做的一切操作;如果你希望在一个特定的项目中使用不同的名称或邮箱,你可以删除命令中的--global选项。
查看Git配置信息
查看所有配置信息
$ git config --list
查看系统设置的配置
$ git config --system --list
查看用户设置的配置
$ git config --global --list
所有与Git相关的配置文件,其实都保存在计算机本地。因此,可以直接编辑配置文件。
用户配置文件路径:/home/用户名/.gitconfig
系统配置文件路径:暂时没找到
苯人目前只在仓库里找到了系统配置文件。。。
Git的基本理论
三种状态
现在请注意,如果你希望后面的学习更顺利,请记住下面这些关于Git的概念。 Git有三种状态,你的文件可能处于其中之一: 已提交(committed)、已修改(modified) 和 已暂存(staged)。
已修改表示修改了文件,但还没保存到数据库中。
已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
已提交表示数据已经安全地保存在本地数据库中。
这会让我们的Git项目拥有三个阶段:工作区、暂存区以及Git仓库目录。
工作目录、暂存区域以及 Git 仓库
工作区 是对项目的某个版本独立提取出来的内容。这些从Git仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
暂存区 是一个文件,保存了下次将要提交的文件列表信息,一般在Git仓库目录中。
Git仓库目录 是Git用来保存项目的元数据和对象数据库的地方。 这是Git中最重要的部分,从其它计算机克隆仓库时,复制的就是这里的数据。
基本的 Git 工作流程
在工作区中修改文件。
将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。
提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。
如果 Git 目录中保存着特定版本的文件,就属于 已提交 状态。如果文件已修改并放入暂存区,就属于 已暂存 状态。如果自上次检出后,作了修改但还没有放到暂存区域,就是 已修改 状态。
Git项目搭建——本地仓库搭建
创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库。
1、创建全新的仓库
在当前目录新建一个Git代码库:
$ git init
执行后可以看到多出了一个隐藏目录.git,关于版本等的所有信息都在这个目录里面。
2、克隆远程仓库
克隆一个项目和它所有的版本信息:
$ git clone https://gitee.com/< >
Git文件操作
现在我们有了一个 真实项目 的 Git 仓库,并从这个仓库中检出了所有文件的 工作副本。 通常,你会对这些文件做些修改,每当完成了一个阶段的目标,想要将记录下它时,就将它提交到仓库。
请记住,你工作目录下的每一个文件都不外乎这两种状态:已跟踪 或 未跟踪。 已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后, 它们的状态可能是未修改,已修改或已放入暂存区。简而言之,已跟踪的文件就是 Git 已经知道的文件。
工作目录中除已跟踪文件外的其它所有文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有被放入暂存区。 初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态,因为 Git 刚刚检出了它们, 而你尚未编辑过它们。
编辑过某些文件之后,由于自上次提交后你对它们做了修改,Git 将它们标记为已修改文件。 在工作时,你可以选择性地将这些修改过的文件放入暂存区,然后提交所有已暂存的修改,如此反复。
文件的四种状态
Untracked:未跟踪,即未被纳入版本控制的文件。
Unmodified:文件已入库但未修改,即版本库中的文件快照内容与文件夹中完全一致。
Modified:文件已修改,仅仅是修改,并没有进行其它的操作。
Staged:暂存状态。
查看文件状态
查看所有文件状态
$ git status
查看指定文件状态
$ git status [filename]
跟踪新文件
跟踪指定文件,即添加该文件到暂存区:
$ git add [filename]
跟踪所有文件,即添加所有文件到暂存区:
$ git add .
说明:
git add
命令使用文件或目录的路径作为参数;如果参数是目录的路径,该命令将递归地跟踪该目录下的所有文件。
提交文件
提交暂存区中的内容到本地仓库 -m 提交信息:
$ git commit -m "消息内容"
忽略文件
一般我们总会有些文件无需纳入Git的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。在这种情况下,我们可以创建一个名为 .gitignore
的文件,列出要忽略的文件的模式。此文件有如下规则:
忽略文件中的空行或以井号(#)开始的行将会被忽略。
可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。
如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
# #为注释
*.txt #忽略所有以.txt结尾的文件
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #忽略doc/notes.txt但不包括doc/server/arch.txt
使用Gitee码云
Gitee - 基于 Git 的代码托管和研发协作平台https://gitee.com/
登录官网,注册账号。
SSH公钥
设置本机绑定SSH公钥,实现免密登录。
生成公钥
$ ssh-keygen -t rsa
复制公钥
$ cd ~/.ssh $ vim id_rsa.pub
上传公钥
1、选择设置
2、选择安全设置 >> SSH公钥
3、选择SSH公钥 >> 添加公钥
- 标题栏中填写自己想要的标题
- 公钥栏中粘贴之前复制的公钥
检测是否畅通
$ ssh -T git@git.oschina.net
看见类似内容即为成功。
创建仓库
在Gitee上创建一个仓库,复制该仓库的地址。
测试
创建一个本地仓库,成功后进入新的路径,然后创建一些测试文件,文件内容随意。
$ git init mytest $ cd mytest $ vim test.txt
通过Git把测试文件添加到暂存区中,再进行提交。
$ git add test.txt $ git commit -m "create a new file"
将本地仓库提交到Gitee。
$ git remote add origin https://gitee.com/< > $ git push origin master
完成。
可能出现的问题:
$ git pull --rebase origin master
再次提交:
$ git push origin master
如果更换了网上的仓库url地址,使用如下命令查看和更改:
$ git remote -v $ git remote set-url origin https://gitee.com/< >