首发自:本然道软件:git仓库的基本使用

前言

在软件研发的过程中,我们如何将自己的代码管理起来,其实是一个很重要的话题。这里的管理往往包含了这样几个方面:

  • 如何共享代码?我们一般不是一个人在研发,即使是你一个人在研发,你也需要将代码进行备份一下。
  • 如果我们犯错了怎么办?是的,我们可能会写出很糟糕的代码,那我们如何回到从前呢?
  • 如何共同维护一套代码?这是一个很重要的事情。一个人写代码,和一群人写代码,区别是很大的。而且,我们需要更多的人一起开发一套代码以加快整个工程的速度。
  • 在不同的环境中,我们如何管理我们的代码?产线有产线环境,测试有测试环境,开发有开发环境。这些环境都有不同的人在同一时间使用。客户用着你的产线环境的时候,你们的测试人员正在测试环境上测试下一个版本的代码。而你在修复bug的空闲期间,在做记下来的技术调研和尝试。三个版本的代码如何管理与更迭。

为了解决这些问题,我们会引进一种叫做版本控制软件的东西。

为什么是Git

主流的版本控制软件有CVS、SVN和Git。现在CVS已经基本推出江湖了,在2010年前后还可以看到它的身影,现在已经很少见了。当然了,中途也出现过一些其它的,比如微软vs studio继承的团队管理工具。不知道现在是不是还在用,由于我现在的接触面,基本上就只剩下SVN了。

CVS

还是先聊聊CVS。CVS是一个客户机-服务器架构的软件,它的使用一般需要在企业环境中,具有良好的网络环境,开发过程中会受到严格的控制。因为所有的信息都在服务器上。我记得当初使用CVS的时候,编辑文件是需要先进行锁定的。编辑完了要记得解锁,要不然别人是无法使用的。这种协作方式,在大型项目中是很不方便的。

SVN

svn现在依然是一种很流行的版本控制系统。它可以将权限授权道目录,非常方便。但是,当我们无法连接到svn服务器的时候,我们是无法提交任何代码的。而且,svn的分支管理本质上是使用了不同的目录,非常的重。在我的公司里,我们更倾向于使用svn来管理文档而不是代码。

Git

Git的诞生是由于linux的创始人Linus想要一个新的版本控制系统用来维护linux的内核,于是他就写了这么一个版本控制系统(要么说大神就是大神呢,不过其实我们也可以)。Git带跟我们的特性主要有这样一些:

  • 本地仓库:我们将Git中的代码拉取到本地后实际上是将远程仓库拉取到了本地仓库。然后我们提交代码的时候实际上是提交到本地仓库的。在Git中需要通过push这个操作动作将代码推送到远程仓库中去。
  • 轻量级的分支:在Git中,所有的文件都只有唯一的版本,分支只是对这些文件的不同的组合罢了。所以,创建一个分支,合并一个分支都不是一个太重的东西。真正的问题其实是不要向Git仓库中传入不必要的文件,因为来了就删不掉了(还是有途径删的,麻烦点罢了。)
  • 基于本地仓库,我们拥有了强大的离线版本控制能力,以及将版本推到另一个仓库的能力。
    基于轻量级的分支,我们可以大量得使用分支来进行版本管理。而在svn中,我们并不会随意创建分支,更多的是保证我们的代码可以回退。

创建一个版本库

本地安装Git

在官方网站上可以找到下载链接,下载安装即可:Git - DownloadingPackage (git-scm.com)

所有的安装选项都可以选择默认,这里我们就不逐一截图安装过程了。你需要注意的是,你要知道你的Git被安装到哪个目录下了。

安装Tortoisegit

这是个什么东西呢?Tortoisegit是一个Git的图形化操作软件,为Git中的指令提供图形化的操作界面。因为Git本身的交互都是通过命令行进行的,对初学者不是很友好,另外对频繁的操作也不是很方便。所以,平时我都是通过图形化操作进行的。这个东西,在Ideal中也有,不过我平时还是习惯通过Tortoisegit进行操作。这是下载地址:TortoiseGit –Windows Shell Interface to Git

安装过程也只是需要输入自己的用户名和邮箱。这是其实是给Git登记的信息。

对了,由于Tortoisegit的图标是一直小乌龟,所以也有人叫他小乌龟。另外就是,并不推荐安装中文版。因为英文版和Git的命令是可以对上的,但是中文版就不好说了。

搞一个远程仓库

为啥说是搞一个远程仓库呢?这个问题我们分三个方面来聊:

  1. 啥是远程仓库
  2. 都可以怎么搞到一个远程仓库
  3. 具体搞一个远程仓库

啥是远程仓库

远程,是和本地相对的。前面我们在本地安装了Git,就可以创建本地仓库了。你在命令行里执行如下指令,即可创建一个本地仓库:

git init

因为你安装Git的时候,安装程序已经自动将你的git.exe所在的路径加入了path,所以你在命令行可以直接执行上述指令。它的结果就是把执行指令的目录初始化成为一个git仓库。这个时候你打开查看隐藏文件夹就可以看到在这个目录下面创建了一个隐藏的名字叫.git的目录。它里面存放了git仓库所有需要的东西。如果我们不希望将这个目录变成git仓库,删掉这个文件夹,一切就都恢复了。文件夹里文件将只是正常的文件而不是受git版本控制的文件。

而远程仓库,顾名思义就是不在本地的git仓库。理论上来说我们在另外一台机器上安装了Git也算。但是,由于我们对远程仓库的使用方法不同,所以我们安装的Git程序是没有办法被当做远程仓库使用的。

都可以怎么搞到一个远程仓库

这里之所以用搞是因为,搞到一个可用的软件仓库有很多种途径:自己装一个,免费仓库注册一个,企业管理平台中自带的。

先说自己装吧。有很多开源免费的程序可以安装,比如GitHub、GitLab。我们在服务器上安装它们之后,就可以那他们当做远程仓库了。自己安装Git仓库的好处就是,这东西是你自己的,没有人拿得走,你想怎么玩就怎么玩。问题嘛,就是你得管它。确实,程序挺稳定的。但是,它运行的机器得一直开机嘛,所处的网络得持续可用嘛,存储数据的空间得够用嘛,真出了什么问题还是要自己上服务器去调试的。推荐高阶用户使用,一般的用户以及小型的企业用户还是在外面的平台上注册一个划算。

再说说网上的免费仓库。前面说的GitHub、GitLab,它们既是可以免费安装的开源软件,也是可以免费注册仓库的开放平台,国内的还有Gitee等。这些平台大多还富含收费项目,不过免费仓库是真的可用就是了。另外Gitee还附带一套团队管理工具,其实蛮好用的。但是吧,毕竟本质是开源平台,企业办公的支持有限,大多还是为开源团队提供支持的角度。所以,个人和开源团队建议使用,公司办公是不推荐的。

最后说说企业管理平台中自带的。按说,它其实和刚才说网上的免费仓库如出一辙,但是它有个本质的区别,就是它本质上是为企业办公服务的,仓库只是它的一个附加服务。比如,阿里云的云效

具体搞一个远程仓库

如上图所示,它几乎可以对全部的软件研发生命周期进行管理。当然了,非常重要的一点是,它还免费。所以,当我认识它以后,就放弃了自己搭建各种Git仓库、Maven私服等等的想法。当然了,肯定有坑,但是至少在代码提交这块,我没发现它有啥坑。点击“代码提交”按钮,进入代码库的管理。

点击新建代码库

如上图所示,我创建了我HelloWorld的仓库。结果如下图:

可以看到这里是有教程的。

Git仓库的基本使用

我们按照它方法二,已有文件夹或仓库的教程进行操作。
先配置全局设置(注意,图里的是错的):

git config --global user.email "linghuanxu@qq.com"
git config --global user.name "nature"

另外,在初始化之前,在仓库的根目录放一个.gitignore文件,如下图所示:

内容如下:

# Default ignored files
.idea/
*.iml
*/target

解释一下这个文件。这是Git默认的读取忽略信息的地方。文件里每行都是一个需要Git默认忽略的内容。第一行是ideal项目信息的文件夹,第二行是ideal项目文件,第三行是maven的目标文件夹。这样我们就不用总是费心选择要哪些文件不提交哪些文件要提交了。
然后初始化仓库

cd D:\codes\nature_workspace

进入目标目录

git init

初始化Git仓库

git remote add origin https://codeup.aliyun.com/61cacd4e03ecfc3a1a252ddc/nature-tech/HelloWorld.git

配置仓库的远程仓库

git add .

这一行是添加本地内容到Git仓库中,我们是直接选中了当前目录。

git commit

这个时候会跳到一个编辑界面里。这里其实是vi。是用来编辑提交记录用的。当我们保存退出后,提交就完成了。提交的意思就是本地仓库已经保存下了这些代码。然后执行以下指令:

git push -u origin master

这行指令是将仓库推送道远程仓库origin的master分支上。但是,这个时候我们会遇到一个非常困难的问题——输入账号密码

是的,它不是你登陆阿里云的账号密码。他需要你在云效——代码管理的个人设置里去设置它。入口在右上角的头像下,然后我经历可绑定邮箱,激活邮箱,修改用户名和密码的操作,才能正常使用。

至此,我们已经完成了git仓库的创建,刚才的添加文件、提交文件、推送仓库就是Git仓库最常用的基本操作。如果一个人使用,不出意外,你只会用到这些

git仓库的基本使用相关推荐

  1. git保姆级入门(包含解决git仓库报错500的问题)

    介绍一个简单的git仓库创建方法: 在git上创建一个仓库 新建文件夹 git clone +刚才仓库的https 此时文件夹里出现仓库文件夹 进入该文件夹,将要上传的文件添加到本文件夹内(注意不要添 ...

  2. svn的代码提交到git服务器_svn服务器代码仓库,数据迁移到git仓库

    svn服务器代码仓库,数据迁移到git仓库 1.安装svn [root@tomcat01 ~]# yum install subversion -y 2.初始化仓库 [root@tomcat02 ~] ...

  3. on-my-zsh git 仓库下运行卡顿

    在 oh-my-zsh 进入 包含 git 仓库目录时,执行 ls 时会比较卡顿 原因: oh-my-zsh 要获取 git 更新信息 解决办法: 设置 oh-my-zsh 不读取文件变化信息(在 g ...

  4. jgit查询远程仓库_JAVA 使用jgit管理git仓库

    JAVA 使用jgit管理git仓库 最近设计基于gitops新的CICD方案,需要通过java读写git仓库,这里简单记录下. JGit是一款pure java的软件包,可以读写git仓库,下面介绍 ...

  5. 使用TortoiseGit,设置ssh方式连接git仓库。

    开始设置之前的准备:建立项目文件夹,初始化git仓库(右键 git  init),右键打开 git bash ,git pull "仓库地址", 把网站上的仓库代码拉取下来. To ...

  6. 从git仓库中删除.idea文件夹的小技巧

    这篇文章主要介绍了从git仓库中删除.idea文件夹的小妙招,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 如果不配置.gitignore的文件,带push ...

  7. linux centos7安装git服务器配置,CentOS7 Linux环境下搭建Git仓库

    1.安装依赖库 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel 2.安装Git ...

  8. 如何完整迁移git仓库到另一个远程地址

    项目中遇到git仓库迁移,很常见.如何把一个项目中所有的分支,tag等迁移到另一个仓库地址,需要执行一个特别的克隆命令,然后镜像push到新的仓库地址.具体步骤如下: 1.打开命令行工具 2.以bar ...

  9. [原创]SSH密钥访问Git仓库配置

    SSH密钥并非为了解决拉取git仓库代码时,需要频繁输入密码的问题. SSH是一种比较安全的协议,可以用来免去远程登录Linux等服务器时需要输入密码的繁琐过程. 命令: ssh user@serve ...

  10. 为Spring Cloud Config Server配置远程git仓库

    简介 虽然在开发过程,在本地创建git仓库操作起来非常方便,但是在实际项目应用中,多个项目组需要通过一个中心服务器来共享配置,所以Spring Cloud配置中心支持远程git仓库,以使分散的项目组更 ...

最新文章

  1. windows下带超时的telnet探测IP和端口
  2. 初赛问题求解及选择题数学相关整理
  3. vue大括号里接受一个函数_vue源码探究(第四弹)
  4. redis-Set集合操作SADD,SMEMBERS,scard,srem
  5. MVC教程第二篇:第一个页面
  6. TokenInsight:反映区块链行业整体表现的TI指数较昨日同期上涨0.56%
  7. Ripple(Glance)
  8. Freescale i.mx28 Boot-stream分析
  9. android idle模式
  10. matplotlib学习
  11. PLL-Hyd-PEG-COOH/NH2/NHS/OH/MAL/SH/N3 聚赖氨酸-腙键-聚乙二醇-官能团的制备
  12. 绘制奥林匹克五环旗。
  13. C++标准库(第二版,作者_NicolaiMJosuttis)_第六章标准模板库_概述
  14. 查看 namespace 下面所有的资源并删除
  15. 用计算机唱樱花下的重逢,抖音樱花树下的重逢是谁唱的
  16. 树的结点数+蒲丰投针概率
  17. 网络连接出现意外错误的解决办法
  18. FileUpload的使用
  19. 华为机试—介绍、剖析、建议
  20. HTML前端输入一个值判断奇数还是偶数

热门文章

  1. JavaWeb-Session
  2. 关于simpleCD
  3. 被吸并无果,启迪环境何去何从?新管理层亮相首秀了什么?
  4. 网线/水晶头/RJ45 网线线序
  5. OCR(文字识别)功能与ASR(语音识别)的java应用开发(基于百度智能云)
  6. java计算机毕业设计MVC土特产交易平台系统(附源码、数据库)
  7. 机器学习初级算法梳理一
  8. 0欧电阻、电感、磁珠单点接地时有什么区别?
  9. 一些开放的可以调用的API接口
  10. 共享别人的网络打印机每次只能打一张解决办法