【IDEA Git系列(共x篇)】第1篇:Git和Gitea介绍、建立远程仓库以及推送和下拉代码

  • Post author:
  • Post category:其他





有自己思想,拒绝纯复制黏贴!!!




有自己思想,拒绝纯复制黏贴!!!




有自己思想,拒绝纯复制黏贴!!!


这里说个题外话,现在网上有一种现象让我深恶痛绝,就是很多网友对别人所发的博文不加验证,便进行纯复制转发,我很想知道,转发了之后意义在哪?自己都没有去验证所转发的内容是否有效便进行纯复制转发,你们这是在污染网络环境,每次我遇到问题,网上一搜,搜索引擎前面几页一模一样的答案,而且还不是有效的博文,看着这些千篇一律的东西,真的是让我抓狂!!!小小吐槽一下


———————————————————————————-以下是正文———————————————————————————–


在这里插入图片描述

(注:本人是个小白,目前对Git一知半解,以下内容是我现在准备系统学Git所做的真实记录,主要为了加深自己的理解,另外,如果也能帮到你们的话,那是我的荣幸,如有错误之处,请不吝赐教,海涵海涵)

欢迎来到王者荣耀,呃呃,不好意思,串场了,重来,欢迎来到git介绍与使用专场,在这里我会为大家详细介绍以下内容(主要讲的是Git比较常用的操作):

1、何为Git?Git的作用是啥?什么是Gitea?Gitea如何创建远程仓库?如何从远程仓库下拉项目代码?如何上传代码到远程仓库?

2、在多人协同的情况下代码冲突该如何处理?

3、如何回退版本?

… …

并会配上具体的实例,争取用通俗易懂的文字和图文并茂的方式来让大家明白这些概念和Git的使用。

最近本菜鸟在工作中接触到了Git,由于第一次接触,操作过程中出现的各种问题搞得我头皮发麻,迫于形势,于是自己到处查资料以及请教同事,才渐渐对Git有了比较清晰的概念。

下面就开始记录本菜鸟学习Git的过程吧!



一、何为Git?Git的作用是啥?

什么是Git呢?Git的作用又是啥?官方的定义是“Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目”。通俗点讲,就是它可以帮我们管理项目的版本迭代,这是最主要的作用,方便我们的开发,如果我们是多人开发,就算开发的几个人不在一处,也可以很方便快捷地获取到最新项目代码,如若迭代了代码,但之后发现新迭代的代码有毛病,或者不想要新迭代的代码,那也可以很快地恢复到迭代前的版本… …

也就是这诸多好处,使用Git便成为我们必不可少的一项技能。

(说明:关于如何安装Git?请自行百度,网上资料很多,这里就不赘述了)



二、什么是Gitea?Gitea与Git有啥关系?

Gitea是一款极易搭建的自助Git服务,是一个基于Git实现的在线代码仓库。也就是说,Gitea依赖于Git。

类似Gitea的还有GitHub、Gitee、GitLab等。

这里稍微做一下总结:

Git

:是一种版本控制系统,是命令的集合,是一种工具,类似于Windows的cmd(命令提示符);


GitHub

:是一个基于Git实现的在线代码托管仓库。刚开始只有建立公共仓库是免费的,建立私有仓库要收

费,现在好像建立私有仓库也免费了,但想使用高级功能和企业级功能依旧要收费,现在具体啥情

况我也没去了解,因为我感觉我用不到,毕竟GitHub服务器在国外,国内网络延迟太高了,它就算

全免费,用起来也很憋屈呀,偶尔找找项目来学习,那还可以;


Gitee

:即码云,类似GitHub,是OSChina免费给企业用的一个国内的在线代码托管仓库,不需要自己搭建环

境;


GitLab

:类似GitHub,一般用于在企业内搭建Git私服,需要自己搭环境;


Gitea

:类似GitLab,同样需要自己搭环境。那么,GitLab和Gitea如何取舍呢?网友总结了这样一句话:“人少

Gitea,人多 GitLab;没钱 Gitea,有钱 GitLab”;

… …

代码托管仓库都是基于Git的,它们的操作大同小异,本教程就用Gitea来进行实验说明。



三、准备工作

1、首先需要搭建好Gitea,关于如何搭建,网上也有很多有效资料,写得很明白,网上有的,我这里就不赘述;

2、搭建好Gitea之后,便可以登录Gitea网站了,

登录前的界面


登录前的界面


登录后的界面


登录后的界面



四、如何创建远程仓库?

登录后,点击仓库列表右上角的“+”号,即可进入创建远程仓库界面,

在这里插入图片描述

填写上基本信息后,点击“创建仓库”按钮,即可创建远程仓库,创建成功后会自动跳转到以下界面,

在这里插入图片描述

远程仓库到这就已经是创建成功了!

说明:克隆一个仓库有两种链接,一种是HTTPS,一种是SSH,使用SSH的话可以避免总是需要输入账户密码的麻烦,相对来说比较方便,至于这两种的详细区别和作用,这里不作详细介绍,网上有详细资料。



五、Git概图

在这里插入图片描述

说明:这个图只画了工作区和本地仓库,远程仓库没有画进来



六、如何绑定和拉取远程仓库

此时,我们创建好的远程仓库GitTest是一个空的,里边什么都没有,一个远程分支也没有,项目和代码更没有,但我们依旧可以用个人电脑上的开发集成软件绑定这个远程仓库,开发集成软件我用的是IDEA,其他开发集成软件,比如Eclipse也是可以的。

打开IDEA软件,点击“VCS(Version Controller Settings)”的下拉框里的“Get from Version Control…”,

在这里插入图片描述

紧接着就会弹出以下弹窗,

在这里插入图片描述

如果URL你们填的是HTTPS的,点击“Clone”按钮后会向远程仓库发出一个克隆请求,但是会立马被拒绝,因为HTTPS需要你提供账户密码进行认证,认证成功后才能进行克隆,

在这里插入图片描述

但如果URL你们填的是SSH的,则可以免去每次都要输入账户密码的麻烦,不过第一次使用还是需要做相应的配置才行,其中涉及到公钥私钥这些东西,网上也有秘钥生成和配置的详细教程,想要使用SSH方式克隆的道友请自行了解。

绑定和克隆成功后的界面如下(以下截图是使用HTTPS方式进行绑定克隆的),

在这里插入图片描述

以上的绑定克隆操作,其实就相当于命令git init和命令git clone的集合。

那么我们如何确定个人电脑上的GitTest文件夹确确实实绑定了远程仓库?我们只要打开个人电脑上的GitTest文件夹,看一下里边是否有一个.git隐藏文件夹,这个.git隐藏文件夹便是Git接管这个文件夹的标志(说明:我们在Gitea网站上看到的GitTest是远程仓库,而在个人电脑上看到的GitTest文件夹是本地仓库。个人电脑上看到的GitTest文件夹之所以叫本地仓库,是因为里边有.git隐藏文件夹,代表这个GitTest文件夹被Git接管了,如果没有这个.git隐藏文件夹,那它只是一个普普通通的文件夹而已,并不是本地仓库)

在这里插入图片描述

那么到这里,我们便可以通过IDEA拉取或推送项目代码到我们刚才在Gitea创建的远程仓库上了。其实准确来说,拉取应该是从远程仓库的远程分支上拉取项目代码,推送应该是将项目代码推送到远程仓库的远程分支上,然而很多人都喜欢简略地说从远程仓库拉取代码,推送代码到远程仓库。(说明:一个远程仓库可以拥有多个远程分支,同样的,本地仓库也可以拥有多个本地分支)(注:关于远程仓库和本地仓库、远程分支和本地分支,它们的作用和区别请移步本文最底下的附录一


1


进行了解)

此时此刻,远程仓库没有任何分支,本地仓库也没有任何分支,(说明:查看远程仓库,出来了两条数据,其实这只是一个远程仓库,只是细分成拉取和推送两种了,每条数据最前面的origin单词,是这个远程仓库的别名。)

在这里插入图片描述



七、如何上传代码到远程仓库?

现在,我们先在IDEA上新建一个test.txt文件,再在test.txt文件上随意写些东西,我们写的内容是十个0,如下,

在这里插入图片描述

此时,细心的小伙伴会发现我们新建的test.txt文件的文件名是橙色的,这个颜色是有具体含义的,橙色表示该文件还未加入Git的版本控制,文件状态为Untracked(Git文件有四种状态,请移步本文最底下的附录二


2


进行详细了解),此状态的文件是无法提交到本地仓库的本地分支上或推送到远程仓库的远程分支上的,需先将其加入到Git的版本控制中方可进行提交和推送(至于为什么无法直接提交和推送,个中缘由有感兴趣的道友请移步本文最底下的附录三


3


进行详细了解)。

那么,我们现在就将test.txt文件加入Git的版本控制,如下,(相当于命令git add)

在这里插入图片描述

加入成功后,test.txt文件的文件名变成了绿色,表示已加入版本控制但还未提交过,

在这里插入图片描述

(延伸:IDEA的文件的文件名颜色还有,蓝色,表示已加入版本控制且已提交过,但内容有修改;白色,表示已加入版本控制且已提交过,但内容没有修改;灰色,表示版本控制已忽略的文件)(说明:文件内容有没有修改,是工作区相对于版本库而言的)

(疑惑点:正常来说,想要提交到本地仓库,是只有添加到暂存区的文件才可以的,也就是说,文件状态得是Staged,当我们修改了文件内容之后,文件状态由Staged变成Modified之后,按道理,我们是需要用git add命令将其添加到暂存区,此时才能提交到本地仓库,然而我们在IDEA上修改已追踪文件的内容,事实却不需要点击Add按钮,可以直接点击Commit按钮将其提交到本地仓库,所以我猜测IDEA的Commit按钮点击后应该是git add和git commit这两个命令的集合)

现在,我们将test.txt文件提交到本地仓库,

在这里插入图片描述

提交成功后,test.txt文件的文件名颜色变成了白色,

在这里插入图片描述

同时,本地仓库提交记录如下,

在这里插入图片描述

紧接着,我们再将其推送至远程仓库,

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

此时,我们去到Gitea网站上看就可以看到推送记录的了,

在这里插入图片描述

大伙有没有发现,我们在提交和推送前,远程仓库是没有任何远程分支,本地仓库也没有任何本地分支,上面我们也用命令查询验证过了,确实都没有分支,而我们提交和推送都是弄到仓库的分支上,之后过程中我们也并没有新建分支的操作,而是直接进行了提交和推送,提交和推送完,远程仓库就已经有一条分支了,本地仓库也有一条分支了,我们可以再用查询分支命令验证一下,

在这里插入图片描述

你们看,对吧?本地仓库有一条master分支,远程仓库有一条origin/master分支(origin就是前面提到的别名)。master分支是本地仓库的主分支,origin/master分支是远程仓库的主分支,它们应该是Git或者IDEA自动帮我们新建的,不需要我们手动新建,而本地仓库和远程仓库除了主分支外,其他的分支就需要我们手动新建了。



八、如何下拉项目代码?

有了前面的铺垫,下拉代码就更简单了,直接点击这个快捷按钮即可,

在这里插入图片描述

|=============================================================================|



【IDEA Git系列(共x篇)】文章清单


总结篇:Git使用总结


第1篇:Git和Gitea介绍、建立远程仓库以及推送和下拉代码(此时在这里)


第2篇:提交代码时提示冲突如何处理



第3篇:如何回退版本


|=============================================================================|


  1. 附录一:


    提问

    :Git本地分支有什么用?

    为什么Git要有本地分支和远程分支?

    难道不能始终保持本地和远程分支一样么?

    我如果在本地创建了一个分支branch1,这个分支可以和远程的master分支关联吗?


    回答

    :我觉得你对远程分支和本地分支的理解没什么问题,只是对Git或者版本控制工具有一些误解。

    版本控制工具的诞生,并不单单是为了备份而诞生的,它更多是为了方便多人协作。

    从这个角度上来看的话,你可以这么理解:

    远程主分支(比如origin/master):是为了与多人协作存在的,同时也是一个项目的公共代码仓库;

    本地主分支(比如master):是为了与远端公共分支保持同步而存在的,这和你的理解一致,就是理想情况下,它应该和

    远端保持一致;

    远程副分支(比如origin/develop或者origin/feature-xxx):是为了像公共分支合并代码存在的,同时也兼顾一定的协作职

    能;

    本地副分支(比如develop或者feature-xxx):单纯是为了个人开发方便,因为你可能会同时开发多项功能,而多项功能的代

    码基础却是相同的。

    ↩︎

  2. 附录二:

    在这里插入图片描述

    在这里插入图片描述

    git文件状态有四种:

    Untracked



    Unmodify



    Modified



    Staged




    Untracked

    :未跟踪状态,表示该文件在工作区中,但并没有加入版本控制。可通过git add命令将其加入版本控制,加入后,文件状态变为Staged;


    Unmodify

    :未修改状态,表示该文件已加入版本控制,工作区中该文件的内容与版本库中该文件的内容完全一致,未作修改。这类状态的文件有两种去处,一种是文件修改了,状态便变成Modified;另一种是使用git rm –cached …将其移出版本库,状态变成Untracked;


    Modified

    :已修改状态,表示该文件作了修改。这类状态的文件也有两种去处,一种是使用git add命令,文件状态便变为Staged;另一种是使用git checkout命令可丢弃修改过的,文件状态变为Unmodify;


    Staged

    :暂存状态,表示该文件位于暂存区中,等待被提交。可使用git commit命令提交到本地仓库,提交成功后文件状态变为Unmodify;

    ↩︎

  3. 附录三:

    为什么没有加入Git的版本控制的文件无法直接提交到本地分支上或推送到远程仓库的远程分支上,有位大佬讲得挺好,感兴趣的道友请点击查看

    Git三大特色之Stage(暂存区)


    ↩︎



版权声明:本文为weixin_42307507原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。