Git快速入门,看这篇就够啦

111 阅读7分钟

前言

git主要解决了开发中哪些问题:

  • 代码意外丢失

    比如硬盘磁盘损坏

  • 协同开发困难

    一个庞大的项目一般由多个人协同开发,那么代码合并该怎么办,总不能大家互相拷贝吧

  • 追责问题
    当项目中某行代码出了问题,这行代码到底是谁写的

  • 代码还原问题

  • 有时候写代码写着写着就面目全非了,想还原原来的代码怎么办

版本控制的方式

集中式版本控制 (SVN -已过时)

集中式版本控制工具的版本库是放在中央服务器上的,团队中的每个成员都从服务器上下载代码,还必须联网,修改完成后再提交到中央服务器上,那么这也存在一些问题,如果网络断掉了,或者中央服务器宕机了,那都没法工作了,如果服务器坏了,之前提交的版本都不见了。

分布式版本控制 (Git)

分布式版本控制工具也有一个公共的版本库,但是每个开发人员的电脑上也有一个库,开发人员完成代码修改以后就 推到这个共享库中,这样的设计就算是这个共享库挂掉了,程序员电脑上也有代码,也就是说它不是集中放在一个共享库中,它发布在每个程序员的电脑上。

Git 安装

直接去官网下载,无脑下一步就可以了,它的体积也很小,改不改路径都无所谓 。

下载完毕后一定要记得设置用户名和邮箱,不然到时候代码出问题了,怎么找到写bug的那个程序员呢??🤪

鼠标右键,找到 Git Bash Here,进入小黑窗输入以下 命令

git config --global user.name 你的用户名
git config --global user.email 邮箱

查看是否设置成功:

git config --global user.name
git config --global user.email

Git基础操作指令

你在使用Git在本地操作时,大致流程应该是这样的:

有点绕没关系,一步一步来,首先需要有一个本地仓库:

git init

创建一个本地仓库 -- git init,在使用这个命令前需要保证它是进入到你所要管理的项目的目录下哦,进入以后记得打开Git Bash Here 才可以输入命令

创建成功后你应该会在此目录下看见一个 .git文件夹,可以利用ll -a看看

这里我已经创建了一个文件--hello.txt,这里要提一下,由于这个Git和Linux是一个爸爸,如果学过Linux的小伙伴就更得心应手了,没有学过的小伙伴在window下直接用鼠标操作也可以,比如创建一个文件可以用touch,但是也可以直接鼠标右键创建,这是一样的。

git status

回过来,我们创建了一个文件,这个文件在工作目录下是什么状态呢,可以使用--git status 查看

如果你是刚刚创建的,那你就只有use “git add”那一行以上的东西,由于我这个是已经提前实验过的了,所以它有点区别,不过没多大影响,我这个是修改了没有更新。

git add

随后我们将hello.txt放入暂存区,使用git add 文件名,我们直接使用git add .就是将所有的都放入暂存区,不然文件多起来,一个一个放多慢啊。

随后再查看状态--git status

git commit

随后会有一个绿色的东西出现,它说changes to be committed就是即将被提交的更改,也就是即将被提交到本地仓库,所以使用--git commit -m “注释” 文件名,这里注释随便你要写什么。

提交以后我们再查看状态,发现已经很干净了

git log

然后我们可以利用--git log查看具体提交的日志,还有一个对应的--git reflog 它查看的信息属于git log的精简版。

到这里我们就完成了上面那个很绕的图的大致流程了,修改和创建是一样的操作,就不赘述了。

git reset

这个命令是用来回退版本的,尽量不要使用!!! 在控制台输入 git reset --hard commitID (这个commitId)可以用git reflog查看,前面那一串黄不拉几的就是它的ID了,复制你需要回退版本的ID,替换掉reset的commitID那里,按下回车即可。

.gitignore 文件

有时候我们不希望有些文件也被git管理,比如node_modules,完全没必要管理它,那么我们可以创建一个.gitignore 文件,顾名思义就是git忽略文件

现在我有这么多文件,包括.c结尾,.html结尾,.txt结尾等

我现在不希望.c结尾的也被git管理,那么就打开.gitignore文件输入*.c保存,然后再次运行git status可以看见.c文件并没有被git管理

git分支

分支的概念可以这么想,团队多人开发,为了互不影响,所以要开多个分支,每个人在不同的分支上开发,最后合并代码。

查看本地分支 --git branch

这里我自己是开了两个分支的,现在正在使用的分支是master

创建分支 --git branch 名字

切换分支 --git checkout 分支名

分支互不影响

这是dev01分支下的hello.txt内容

然后我们修改这个分支下的hello.txt文件,在第一行添加一个dev01文字

然后切换到master分支下查看hello.txt是否也被修改了,可以看见master没有受到影响。

合并分支--git merge 分支名

一般我们都是在master分支上去把别的分支合并过来,所以记得先切换到master分支上来。

随后查看master的hello.txt内容,发现合并成功了

解决冲突

假设有两个程序员在不同的分支中修改了同一个地方的代码,那这时候就产生冲突了,那这时候到底要听谁的呢,总不能乱合并吧,所以这时候就只好手动解决了。

现在我们将master分支上的hello.txt的最后一行添加文字“i am master”:

记得放到仓库里,然后切换到dev01分支修改同一个地方:

一样记得加到仓库里 ,然后切换到master分支合并两个分支(会发现fail了):

打开hello.txt看一下:

发现它把两个修改的东西都放进来了,因为git它不知道怎么办,那就直接都甩进来,让我们自己处理,所以就把这个文件改成自己想要的样子就行了,我就把两个都留下了,但是记得把一些奇奇怪怪的字符删了,这里提一下,HEAD指的是当前分支

最后加入到仓库,查看hello.txt的内容

远程仓库

在本地仓库修改代码完成以后,应该推到远程仓库里面,所以需要注册一个GitHub,(如果没法注册GitHub就只好去网上找找码云的教程了),在GitHub中我们创建一个仓库,注意用GitHub说明你的项目是开源的,企业中项目一般不开源,所以用GitLab。

创建仓库

点击图中蓝色区域创建仓库:

打红色* 的是必需要填的,然后我们默认选择公开,不选择私有,随后点击创建即可 创建成功以后就需要把我们在本地修改完成的代码推上来,首先找到刚才创建项目的https地址,并且复制下来。

随后在控制台输入--git remote add (随便取个名字) https的地址

推送代码

那么现在就可以推到仓库里面了,输入--git push (刚才随便取得那个名字)(你要推送的分支)

此过程可能有点慢,稍微等一等,如果失败了就多试几次。

成功以后刷新一下页面,可以看见master上写的文件都push到GitHub上了

拉取代码

当仓库上的文件有变化时,我们需要把把本地库和远程库的文件统一,所以我们需要拉取远程库的文件,此时输入--git pull (刚刚随便取的名字)(拉取到的分支)

例如:git pull git-demo1 master

小建议

最后大家可以去看看ssh免密登录的用法,我这里因为公钥和很多东西有关联,就不演示啦,免得到时候有些软件突然就不能用免密了。