直接进入主题
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
这是官网首页对Git的介绍,重点是两个关键词,开源就不说了,最重要的是一款版本控制系统 。至于说另外一个版本系统SVN,不用去管网上一大堆的区别,只需要知道一点,Git是分布式的,SVN则不是,其他的缺点等你用多了慢慢就能体会到了。
其实官网的这个介绍还是太专业了,讲人话就是Git是多人协同的同步工具。对于一个文件,可以多个人在不同的时间地点修改,然后进行一系列的操作对文件进行修改同步。
地基
先来讲怎么安装
windows
https://git-scm.com/download/win 下载完后,next大法好 。再次友情提示,安装软件,非特殊情况下,一律不推荐安装在c盘。
mac
至于mac的话,不会吧不会吧,都快2202年来,不会还有人mba或者mbp上还不安装homebrew叭🐶🐶🐶。
不过官网上也确实是这样推荐的
无论哪个平台,打开终端,输入git version
,如果你能看到如下,那说明安装成功了。
再来讲Git的基本知识
本地指的是本地PC,origin是指远端自己的仓库,remote是指远端别人的仓库。remote中一般就是常说的远程仓库,存放着大家共同修改的文件。至于里面的一些操作下面会讲。
小木屋
首先创建一个远程自己的仓库,在gitee上创建即可
注意选择的是开源,私有的话就是只能你自己访问了,创建完之后在gitee上就能看到了。接下来要做的就是把远程自己的仓库克隆或者拉取到本地,这里先使用命令行。
clone
git clone [仓库地址,一般是采用ssh,但是https也行]
通过.git目录就可以知道该目录所在的文件夹是一个git仓库
所有有关git的操作都是需要在git仓库下面执行,不然就会有
fatal: not a git repository (or any of the parent directories): .git
这样的提示add
接着新建一个first的txt文件,里面写了
add file firstly
,然后git add
对于add而言
add file
是添加某个文件add file1 file2
是多个文件add .
是该目录下所有修改过的文件。
git比较人性化的一点就是当你打错的时候会提醒你接近的正确的打法,或者哪里出错了。然后使用git status
来查看状态,这个命令在命令行中比较常用,这里就不再单独拎出来说。
使用git rm --cached <file>
撤回提交:
撤回提交后,再次使用status,可以发现文件已经变成untraced未被git追踪的状态,接下来add两个文件
commit
通过提示也可以知道到了commit,所谓commit就是提交到本地的仓库,虽然你在仓库下新建了文件,但是并没有提交给git
注意,是本地的仓库,不是远程自己的仓库
所以以后记得,所以以后记得,commit一定要记得带message,对应的命令是
git commit -m 'message'
push
这时候远程自己的仓库是没有的,毕竟你知识commit到了本地的仓库,如果想要远端有,那就必须采取push操作
可以发现
Permission denied
没有权限,这是因为gitee没有认识我们,所以需要生成ssh公钥并上传gitee。生成公钥
首先看电脑中的.ssh文件夹(无论是windows还是mac默认都会生成在这个文件夹下,都是在用户目录下)里有没有id_rsa和id_rsa.pub文件。
得到生成的公钥后,进入gitee设置,让gitee认识这个公钥
接着再进行push操作试试
可以看到已经能成功push上远程自己的仓库,这时候再去gitee上面看看,码云上已经有了两个文件,并且后面跟着的就是commit时候写的message。
remote
一般来说,push后面是要跟着地址的,但是本地中remote地址只有一个的情况下后面就可以不用跟地址。可以通过以下命令来设置远程仓库地址。
当然,我们push到远程别人的仓库的时候肯定是没有权限的,因为根本不认识我们,这时候就需要后面讲的fork和mr了。
fork
所谓fork,就是把远程别人仓库的代码复制到远程自己仓库的代码,fork完之后在自己远程本地
复制完地址后clone到本地
merge reques
现在是在我们自己的电脑,自己的码云账号上,所以能push。但是在工作中,肯定会有一个服务器来存放代码,在服务器上不可能存着这么多人的公钥,而且大家都能这么轻易地往上push的话,冲突也会增多,也不利于管理。
首先创建一个java文件,add commit push,这里的push也是只能push到自己远程的仓库 ,而组织的远程仓库是没有的。
要想远程的仓库也能有我们修改或者增加的文件,需要发起merge request。GitLab上成为merge reques,GitHub或者Gitee上称为pull reques。至于有没有区别,反正我使用起来没啥区别。
首先来看看本地的pull request
添加对应的信息后就能够提交mr了,然后需要远程仓库的人进行审核,一般公司都会有规定的人来审核,看代码有没有错误,写得好不会,总的来说就是看能不能合入。
再来看看远程仓库的pull request
可以看到远程通过一系列的操作,成功的合入了代码,这些远程仓库中也有了修改后的代码,并且在自己的gitee上面会收到合入成功的信息。
创作不易,如果对你有帮助,欢迎点赞,收藏和分享啦!
下面是个人公众号,有兴趣的可以关注一下,说不定就是你的宝藏公众号哦,基本2,3天1更技术文章!!!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。