初识git · 远程操作

目录

前言:

理解分布式版本控制系统

远程仓库

仓库操作

克隆仓库

推送和抓取

特殊文件

取别名

标签管理


前言:

在基本操作,分支管理这几个部分,我们都会在本地仓库操作了,但是目前还没有办法将自己的代码远程推送到仓库里面,所以本文,我们学习远程操作,操作完之后,我们就可以将自己的代码远程推送到我们自己的gitee或者是github账户啦。

那么废话不多说,进入今日主题------远程操作。


理解分布式版本控制系统

git的本质是分布式的版本控制系统,版本控制我们已经知道了,git中通过改变HEAD指针的朝向,从而快速的实现版本回退等操作。

那么分布式,我们其实在分支管理章节有已经有所体会,对于master分支,作为最稳定的分支,一般不会在上面进行开发,对于其他分支,开发分支,以及bug分支,共同维护某个项目,这是分布式,一个项目交给多个分支完成,每个分支完成对应的操作。

最初,分布式可以理解为两个人的电脑互传对应的修改,所以两个人之间可以看到所有的文件,如果一个人的数据丢失了也不用担心,直接从另一个人的电脑上cv就可以了。

那么,实际上分布式操作的时候很少有两个人互相传数据的,一般都是一台机器作为中央服务器,也就是所有的代码,数据都会放在上面,谁的数据丢失了,谁的代码丢失了,都可以从上面cv代码回来。

所以,对于我们来说,中央服务器实际上是我们平常生活中使用的gitee的仓库,我们将该仓库作为中央服务器,代码也都是传在上面的,那么,我们如何新建一个远程仓库呢?

远程仓库

我们在gitee右上角有个加号,点击选择新建仓库,我们就进入到了该界面,那么名称是要有的,路径会默认生成,仓库的介绍也是一定要有的。

然后,是是否开源,我们可以先选择为私有,后面有开源的需求就可以直接开源即可。在新建仓库的时候,我们要注意的点是三个部分

语言,肯定就是自己经常用什么语言就选择什么语言,.gitnore我们后面介绍。开源不用管。

那么对于模板来说,ReadMe文件是仓库的一般说明,也就是别人进入你仓库之后,第一眼看到的就是ReadMe文件,所以该文件的作用是用来具体介绍仓库是用来干什么的。第二个是Issue模板文件,这个文件与之后的Bug之类的有关,我们一会儿看看。第三个是Pull Request文件,是什么我们一会儿介绍。

最后就是分支模型,因为目前来说不是写项目的话,我们选择的一般是单分支模型,也就是只有一条分支,开发啊调试什么的都在上面进行。

此时,我们点击创建。

出现了如下的文件,对于README文件我们已经清楚,其中后缀有en的README文件是英文,非en的就是中文版的:

具体的内容我们都是可以自己编辑的。

那么我们看看Issue文件:

该文件所在的目录是.gitee里面,我们根据该文件的一个模板,大概也能猜出大体功能是什么,也就是发现Bug的一个报告模板,在Issue一栏我们可以看到:

这就是Issue的具体图形化,新建Issue试试:

在Issue一栏,我们可以设置对应的负责人,标签(里面不止有bug),还有该问题是在哪个分支上出现的,日期也有,并且可以选择置顶等级和优先级,这是非常符合企业级的管理的。

此时创建之后,

Issue里面就有了对应的报告,那么当问题解决了,我们可以在对应的状态里面点击已解决,此时一个bug就被我们解决了。

当然了,这个仓库如果是开源的,任何人都是可以提交Issue的,我们作为管理者,可以对Issue进行任何的处理,如拒绝等。

对于Pull Request来说呢,是一个分支合并请求,因为开发中的时候,不是能直接合并的,如果能随便合并,那么项目基本上就报废了,所以存在着合并请求的东西,我们作为管理者,自然是有权处理对应的请求的。

对于远程仓库的Pull Request和Issue就暂时讲解到这里。

仓库操作

克隆仓库

我们创建了仓库,自然是需要提交代码上去的,那么第一个点,我们如何克隆远程仓库到我们的本地呢?

此时,存在两种常用的克隆方法,一种是使用SSH协议,一种是使用https协议,对于SSH来说,安全性更高,更有保障,因为它是使用了公钥加密的。对于https协议呢,就没有那么多要注意的了,简简单单的克隆就可以了,我们先使用https协议作为例子:

使用https我们需要的是该字符串,然后使用git clone命令,注意,克隆远程仓库是不能在.git所在的目录创建的,所以我们还需要将原来的本地仓库删除:

此时,仓库就创建好了,创建好了之后,在基本操作那里我们提及最重要的两个信息是名字和邮箱,所以我们也应该配置上:

此时都是没有配置的。

此时,基本配置就做好了。

这是使用https协议克隆的仓库,那么我们将此仓库删除,使用SSH克隆一个。

如果我们直接使用git clone进行克隆的话,那么往往是会报错的:

不能克隆仓库往往是因为我们没有添加对应公钥:

在这里是我们添加公钥的地方,添加公钥之前,我们需要创建文件。

第一步是我们要查看用户的家目录下面是否存在.ssh文件:

这里是有的,那么我们进入:

里面只有这么多东西,而我们需要创建的是id_rsa,id_rsa.pub两个文件,pub是public,公钥的意思,对于id_rsa是私钥的意思,肯定是不能透露给其他人的,公钥就无所谓了。

ssh-keygen -t rsa -C "email"

然后我们退出来,在家目录下执行该命令,注意,邮箱是要输入我们自己的:

此时我们一路回车就可以了。

此时进入到ssh目录下:

我们打开对应的公钥文件:

此时这个一长串的,我们就需要全部复制下来。

然后到gitee添加即可:

添加好了之后,我们此时再次使用ssh协议就可以了:

此时就创建成功了,但是该公钥是只读的,我们应该到设置部分添加公钥,操作一样的,这里就不演示了。

那么我们的仓库克隆操作就完成了。

此时我们可以git remote查看远程仓库的信息:

我们仓库的原始名称就叫做origin。

-v显示了抓取和推送的地址,如果我们没有对应的权限也就看不到了。

那么现在演示推送和抓取。

推送和抓取

对于推送push,我们常用的操作如上,我们目前本地的分支和远程的分支都叫做master,所以我们可以直接git push master即可,此时我们不妨创建文件,push一下试试:

此时push成功了,那么我们看看gitee的提交记录:

此时push成功。如果我们是使用的https协议,每次推送需要输入口令相对来说就麻烦一点。

此时,我们实现一下抓取操作,这种情况是发生在远端仓库代码进度快于本地的,此时需要抓取,那么我们在gitee直接修改一下刚才提交的文件就可以了,但是注意,平时的代码修改是最好不要在gitee上修改的,这是个很不好的坏习惯:

此时修改成功。

pull来说就是远程在前,从远程pull到本地,push是本地push到远程,顺序还是很好理解的:

此时就成功了。

我们平常使用图形化界面的时候,如果没有.git文件,常常就会push出一大推无关的文件,此时,特殊文件.gitignore就出场了。

特殊文件

我们现在克隆仓库里面看看.gitignore里面有没有东西:

是有的,因为我们当时创建的时候,勾选了该文件,所以gitee自动帮我们初始化好了,由Linux的学习我们知道*的意思是通配符,所以*.d的意思就是所有以d为后缀结束的文件都不要追踪它,#的意思是注释,那么文件里面那么多,都是代表不要追踪的意思。

我们创建一个.so结尾的文件,看git的状态是否发生改变:

此时就没有,但是有的时候啊,我们有一个文件是.so结尾,但是是要传输的,那么怎么办呢?

此时只需要! + filename就可以了:

此时我们就可以传了。

那么有的时候,文件传不过去,,gitignore又不好找,我们可以使用check检查一下是为什么:

git check-ignore -v a.so就是说检查一下,为什么传不了。

对于传隐藏文件,如果我们不希望改变.gitignore,我们就可以git add -f filename即可。

取别名

对于有些命令实在是太长了,我们就可以对某些命令取别名:

git config --global alias.st status

--global代表的是这台电脑的所有仓库都可以使用该命令,如果没有了就只有当前仓库能够使用,alias.newname dir即可。

此时我们就可以将status简写为st了。

标签管理

本文呢简单介绍一下标签管理,因为涉及的内容就只有创建标签,操作标签,就没了。

如果要创建标签,我们应该切换到我们需要创建标签的分支上。

使用git tag tagname即可。使用命令git tag可以查看所有标签。

而标签创建好了之后,默认是打在最新一次的commit上的。

那么我们如何修改标签到指定的commit上呢?

git tag tagname + commit id就可以了,commit id也可以使用短的,使用pretty=oneline就可以了。

注意,标签是按照字母排序的,不是按照创建时间排序的

-a指定标签名,-m文字说明。

此时我们tree .git一下:

refs下面就有了一个标签咯。

删除就很简单了,-d即可。

因为创建的标签都是在本地,只有push到远端才有,所以我们可以git push origin tagname

此时我们上Gitee看看:

标签部分也有了。

git push origin --tags

如果有很多标签,可以使用如上的指令一次性推送。

但是删除就相对麻烦一点了:
本地删除之后,远程也需要删除,就像这样。


有关git的远程操作和标签管理就介绍完咯~

感谢阅读!

相关推荐
呆萌的代Ma3 小时前
Git不强行推送,撤销最近几次的提交
git
透明的玻璃杯6 小时前
git应用
git
炸炸鱼.7 小时前
Git+Jenkins实战(一):从零搭建自动化发布与回滚系统(附完整代码)
git·jenkins
言66610 小时前
要忽略前端依赖包node_modules的文件在目录下 git暂存区消失
git
胡小禾11 小时前
Git Worktree
git
程序员小羊!11 小时前
18 GIt
git
怣疯knight11 小时前
Git 本地分支关联远程分支 常用命令汇总
git
ANNENBERG11 小时前
git分支开发管理
git
坤坤藤椒牛肉面12 小时前
GIT的使用
git
w32963627112 小时前
使用 OpenCode 在 Windows 上加速安装 Playwright 的完整指南
windows·git