Git使用指南

Git是目前世界上最先进的分布式版本控制系统

一、Git 与 SVN 区别点

在这里插入图片描述

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

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

1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

二、Git 常用的命令

1.填写用户名和邮箱作为一个标识

git config --global user.name "111"
git config --global user.email "11111@qq.com"

在这里插入图片描述
填写完后能够在电脑的系统磁盘文件夹中看到这样一个文件:
在这里插入图片描述
2.在电脑上创建一个文件夹作为本地工作空间,并创建版本库。然后新建一个文件,纳入到 git 暂存区,再提交代码到本地库。

mkdir 文件夹名, 进入到该文件夹后
git init
touch a.txt  //	新建一个文件
git status //	(如果是红色,仅仅是检查到了有更新)
git add a.txt //	(变成绿色,但还没到本地库)
git commit -m "create file 00" //	git commit 是无法提交的,即一定要写注释

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3. 日志版本信息。
假如a.txt文件有三个版本,分别对应为含有数字1,数字12,数字123。并按照上述指南进行了三次提交,现在需要查看版本信息。

git log a.txt	// 查看该文件的所有日志信息,但是由于显示问题,难以寻找。
git log --pretty=oneline a.txt // 将一个日志显示为一行

在这里插入图片描述
在这里插入图片描述4. 如果在将要提交时,被中断,为了防止更新没有错误,我们可以通过查看更新的内容来确定。

git diff a.txt	// 比较工作空间和本地库的差异

在这里插入图片描述

5.版本回退。(退的前提,表明已经完成 commit 命令了)

git reset --hard HEAD^ //	回退一步
git reset --hard HEAD^^^ //	回退三步
git reset --hard HEAD~n 	// 回退n步

当前为第5个版本(除去新建的那一个版本):
在这里插入图片描述

6.当从第5个版本回退到第1个版本后,假如需求是回到上次的第5个版本,此时工作空间内没有了之前的历史文件。想死的心都有?不急,一行命令搞定。

git reflog a.txt 	//	查看a.txt详细的日志信息
git rest --hard e4e40da // 回退到指定的版本。

git reflog a.txt 可以得到详细的日志信息,根据最前面的数值(十六进制,类似数据库 id,唯一索引)进行回退即可。
在这里插入图片描述

7.版本回撤:(注意和版本回退区分,可以理解为没有完成 commit 命令)

本地添加一行数字 6 以后,并没有进行 addcommit 指令,仅仅在本地工作空间进行了修改。回撤后回到12345的状态。

git checkout -- a.txt 	// 回撤到文件修改之前的内容。

在这里插入图片描述
8. 工作区+版本库+暂存区的理解

工作区(Working Directory): 就是电脑本地硬盘目录。
版本库(Repository):工作区有个隐藏目录 .git,它就是 gi t的本地版本库。
暂存区(stage):一般存放在 ‘’git目录‘’ 下的index文件(.git/index)中,所以我们把暂存区有时也称为索引(index)。
在这里插入图片描述
在这里插入图片描述
我们把文件往 Git 版本库里添加的时候,是分两步执行的:第一步是用"git add" 把文件纳入 Git 管理,实际是把本地文件修改添加到暂存区第二步是用 "git commit" 提交更改,实际上就是把暂存区的所有内容提交到当前分支。

我们创建 Git 版本库时,Git 自动为我们创建了唯一一个 master 分支,所以 commit 就是往 master 分支上提交更改。 可以简单理解为,需要提交的文件修改后放到暂存区,然后,一次性提交暂存区的所有修改。一旦提交完后,如果你没有对工作区做任何修改,那么工作区就是“干净”的。即:nothing to commit(working directory clean)

9.删除文件,删除后也需要提交

git rm -f b.txt // 删除文件

在这里插入图片描述
执行 git rm -f b.txt 命令后,需要提交:
在这里插入图片描述

10.分支(查看+新建+切换+合并(分支名)+删除)

 git branch	// 查看分支
 git branch dev	//	新建分支
 git checkout dev	// 	切换分支 (会将master的东西备份到dev)
 git merge dev	//合并分支(所在master分支上对dev分支进行合并)

在这里插入图片描述
在这里插入图片描述
如果存在内容冲突,强制合并时会出错的,如果没有摆平错误的话一直无法使用。

在这里插入图片描述
手动解决冲突:两个记录都保留,别人的优先,自己的代码放后面。
在这里插入图片描述
删除分支:

git branch -d 分支名  // 删除分支

创建分支并进入该分支:
在这里插入图片描述

三、Github与Git 的协同办公

是什么:github 是一 个 git 项目托管网站,主要提供基于 git 的版本托管服务。
能干嘛:github 是一 个基于 git 的代码托管平台,Git 并不像 SVN 那样有个中心服务器。目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。你就需要将数据放到一 台其他开发人员能够连接的服务器上。
Github 应用:
在这里插入图片描述

注册账号+检查密钥 (由于你的本地 Git 仓库和 GitHub 仓库之间的传输是通过 SSH 加密的,所以我们需要配置验证信息(No such file or directory表示第一次))。这样的指令一般只用一次,类似安装软件一样。

ssh-keygen -t rsa -C an@jxnu.edu.cn

在这里插入图片描述
生成密钥后,可以在本机看到属于自己的公钥:
在这里插入图片描述
在自己的 github 账户上进行配置:
在这里插入图片描述
在这里插入图片描述
连通性测试:

ssh -T git@github.com

在这里插入图片描述
本地库推送到远程库:
新建一个项目名为oa,然后复制其相关命令:

git remote add origin https://github.cm/Xiaoqiuxuan/oa.gi
git push -u origin master

运行上述两条指令,可以看到相关文件已经推送到了github
在这里插入图片描述
本地的文件推动到远程服务器(github):
在这里插入图片描述
如果直接在服务器端进行了修改,则需要拉下来到本地:
在这里插入图片描述
在这里插入图片描述
将服务器端的项目克隆到本地:
在这里插入图片描述
在这里插入图片描述

如果普通用户2与普通用户1之间的项目进行交互:
用户2 fork 用户1 的相关项目,
clone到本地进行修改,然后推送到服务器(提交到用户2的文件中,用户1不知道)
发送合并请求,Pull request
在这里插入图片描述
用户1登录后,在消息通知中,可以查看 files changed, 然后确认后即可。查看后,用户2修改的会用红色(删除部分)+绿色(新增部分)。
在这里插入图片描述
如果提交时,发现有冲突,把整个项目 pull 到本地,然后解决冲突后,最后再推送 push

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值