一、实验目的

个人编程:每个开发人员电脑上有自己的代码。硬盘坏了,所有的数据和资料不能找回或是很难复原。安全意识强一些的公司会要求开发人员将代码隔一段时间放到一个集中的计算机上,以日期为文件夹进行备份,但这也会有问题如:如果备份不及时代码仍然会有部分丢失;过多的备份文件夹大部分内容是重复的会造成磁盘占用;无法做到多个人开发一个项目;无法对比两个版本的差异;代码改坏了,想回退也麻烦。

正规开发团队:使用源代码管理(SourceControl)工具,源代码管理工具主要作用:代码版本管理、多用户并发修改管理。常用工具:VSS(Visual SourceSafe,简称SourceSafe)、TFS(Team Foundation Server)、CVS、SVN等。前两者都是微软的产品,也是.net开发最主流的两种源代码管理工具,VSS适合于几个人的小团队,VSS只能进行源代码管理;TFS适合大团队,不仅包含源代码管理,还支持Bug管理、文档管理、持续构建等。

由此可见,掌握源代码管理工具对软件开发有重要作用,本文档目的就是对几个常用的源代码开发工具进行优缺点分析,帮助大家选择适合自己的开发工具。

二、实验环境

1.单人开发只需要一个本地库

2.多人开发时需要一个共享版本库

3. 使用环境无论是单人开发还是多人开发,客户端都可以使用命令行或者图形界面使用git

三、如何使用

3-1 登录github

github的官方网址:https://github.com ,如果没有账号,可以注册一个。
点击Sign in进入登录界面,输入账号和密码登入github。

3-2 创建repository(仓库)

点击右上角的头像旁边的小三角,展开后可以看到Your profile,点击进入后就能看到repository

切换到repository选项卡,可以看到很醒目的new按钮。点击,就可以开始创建自己的粮仓。

下面是创建仓库信息,只有名字是必填项,现在我创建了一个仓库叫:FIRST

创建成功的图片,如下:

可以看到自己的仓库地址,如此,我的远程免费的仓库就创建了。它还介绍了github仓库的常用指令。这个指令需要在本地安装git客户端。

git init //把这个目录变成Git可以管理的仓库
git add README.md //文件添加到仓库
git add . //不但可以跟单一文件,还可以跟通配符,更可以跟目录。一个点就把当前目录下所有未追踪的文件全部add了
git commit -m "first commit" //把文件提交到仓库
git remote add origin git@github.com:wangjiax9/practice.git //关联远程仓库
git push -u origin master //把本地库的所有内容推送到远程库上

3-3安装GIT

[root@localhost ~]# yum -y install git

查看是否已安装成功
[root@localhost ~]# git

3-4配置GIT

首先在本地创建ssh key;

ssh-keygen -t rsa -C "your_email@youremail.com"

后面的 your_email@youremail.com 改为你的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key。

两次回车回到github,进入Account Settings,左边选择SSH Keys,Add SSH Key,title随便填,粘贴key。

如果是第一次的会提示是否continue,输入yes就会看到:You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。

接下来我们要做的就是把本地仓库传到github上去,在此之前还需要设置username和email,因为github每次commit都会记录他们。

git config --global user.name "your name"

git config --global user.email "your_email@youremail.com"

为了验证是否成功,在Git bash下输入:

[plain] view plain copy

ssh -T git@github.com

在服务器添加完公钥后报错

sign_and_send_pubkey: signing failed: agent refused operation

这个时候我们只要执行下

eval "$(ssh-agent -s)"

ssh-add

就可以了

进入要上传的仓库,右键git bash,添加远程地址:

[plain] view plain copy

git remote add origin git@github.com:yourName/yourRepo.git

后面的yourName和yourRepo表示你再github的用户名和刚才新建的仓库,加完之后进入.git,打开config,这里会多出一个remote “origin”内容,这就是刚才添加的远程地址,也可以直接修改config来配置远程地址。

3-5提交与上传

接下来在本地仓库里添加一些文件,比如README,

[plain] view plain copy

git add README

git commit -m "first commit"

上传到github:

[plain] view plain copy

git push origin master

git push命令会将本地仓库推送到远程服务器。

git pull命令则相反。

修改完代码后,使用git status可以查看文件的差别,使用git add 添加要commit的文件,也可以用git add -i来智能添加文件。之后git commit提交本次修改,git push上传到github。

3-6gitgnore文件

.gitignore顾名思义就是告诉git需要忽略的文件,这是一个很重要并且很实用的文件。一般我们写完代码后会执行编译、调试等操作,这期间会产生很多中间文件和可执行文件,这些都不是代码文件,是不需要git来管理的。我们在git status的时候会看到很多这样的文件,如果用git add -A来添加的话会把他们都加进去,而手动一个个添加的话也太麻烦了。这时我们就需要.gitignore了。

[plain] view plain copy

bin

*.suo

obj

bin和obj是编译目录,里面都不是源代码,忽略;suo文件是vs2010的配置文件,不需要。这样你在git status的时候就只会看到源代码文件了,就可以放心的git add -A了。

3-7tag

我们可以创建一个tag来指向软件开发中的一个关键时期,比如版本号更新的时候可以建一个“v2.0”、“v3.1”之类的标签,这样在以后回顾的时候会比较方便。tag的使用很简单,主要操作有:查看tag、创建tag、验证tag以及共享tag。

四、git的工作流程

4-1在工作目录中添加、修改文件;

4-2将需要进行版本管理的文件放入暂存区域;

4-3将暂存区域的文件提交到git仓库。

因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

五、git的优势与劣势

5-1Git的优势:

(1)它有分布式的版本管理,对比集中式的版本管理系统来说不会出现中心服务器死机影响工作的情况,而可以先存储在本地,等服务器修改好还可以接着进行工作

(2)它是开源的,它强调个体,并且对于公共服务器压力不会太大,大小项目均可管理,拥有良好的分支机制,速度快、灵活,分支之间可以任意切换

(3)冲突解决,多人开发很容易就会出现冲突,可以先pull远程到本地,然后在本地合并一下分支,解决好冲突,在push到远程即可。

(4)离线工作,如果git服务器出现问题,也可以在本地进行切换分支的操作,等联网后再提交、合并等操作。

5-2Git的劣势:

(1)学习成本较高

(2)没有严格权限控制,会导致成员易犯错。

(3)兼容性不好,可能在上个版本的项目内容放到另一个git版本会出错

六、总结

通过这次实验我学会了如何使用GitHub这种源代码管理工具,了解了团队合作的便捷方式。

源代码管理工具-Github的更多相关文章

  1. 【GitHub】源代码管理工具初识

    软件工程综合实践第四次个人作业 作业要求:通过搜索资料和自学,了解源代码管理工具——GitHub 前言: GitHub,读音 /git·hʌb/ ,让社会化编程成为现实,其于2018年6月4日被微软收 ...

  2. 3. 上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点? (提示:搜索一下Microsoft TFS、GitHub、Trac、Bugzilla、Rationale,Apple XCode),请用一个实际的源代码管理工具来建立源代码仓库,并签入/签出代码。

    上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点? ---------------答题者:徐潇瑞 (1)Microsoft TFS的优缺点: 优点:是对敏捷,msf,c ...

  3. 源代码管理工具(上)-SVN基本使用

    ------------------------------------------------------SVN简介和搭建 ------------------------------------- ...

  4. 源代码管理工具-GIT

    源代码管理工具-GIT ---- 一. 掌握 - git 概述 1. git 简介? 什么是git? git是一款开源的分布式版本控制工具在世界上所有的分布式版本控制工具中,git是最快.最简单.最流 ...

  5. iOS核心笔记—源代码管理工具-GIT

    源代码管理工具-GIT 一. git 概述 1. git 简介? 什么是git? > git是一款开源的分布式版本控制工具 > 在世界上所有的分布式版本控制工具中,git是最快.最简单.最 ...

  6. 我发起了一个用 .Net 编写的 源代码管理工具 开源项目 SourceKit

    发起这个 项目 的 起因 是 GitHub . Github 的 使用技能 俨然已经成了 一项新技术 , 这不是 工具 的 本意 . 我用过的 源代码 管理工具 不多,  SVN 我觉得不错 . 常用 ...

  7. git源代码管理工具

    git是一款源代码管理工具 是分布式版本管理工具 分布式管理必须先在本地提交然后才能提交到服务器: svn集中式版本管理工具 集中式版本管理工具离开服务器就做不了版本管理: 初始化仓库 1.用git初 ...

  8. 源代码管理工具GIT

    01.GIT简介 svn是集中式的源代码管理工具,必须联网才能操作 git是分布式的. 有两中:一个是本地代码仓库,一个是远程代码仓库 分布式源代码管理工具 02.GIT - 本地代码仓库使用流程 1 ...

  9. 源代码管理工具之SVN

    源代码管理工具SVN是一款非常强大的源代码管理工具,现在国内70%-90%的公司都在使用SVN来管理源代码,下面就让小编给大家着重介绍一下SVN的使用,SVN的使用主要分为下面几块. SVN的使用环境 ...

  10. iOS源代码管理工具

    源代码管理工具简介 1.为什么会出现源代码管理工具? 为了解决在软件开发过程中,由源代码引发的各种蛋疼.繁琐的问题 2.源代码管理不当可能会引起的后果? 无法后悔:做错了一个操作后,不能回到之前的操作 ...

随机推荐

  1. oracle WMSYS.WM_CONCAT 函数使用

    1.用法 WMSYS.WM_CONCAT(要连接的字段) 该函数返回来自同一个分组的指定字段的非NULL值的连接起来字符串,默认逗号连接,一般搭配分组函数使用 2.示例 select XFJ_ID,R ...

  2. Android Custom View使用Databinding

    Android Custom View是可以使用 databinding 的 //java.lang.IllegalArgumentException: View is not a binding l ...

  3. echarts的bug

    Uncaught Error: Invalide sourceFormat: unknown at assert (util.js:404:15) at mountMethods (dataProvi ...

  4. 【C++复习】第九章 模板与群体数据(2)

    学习重点:容器类型内部的实现机制,顺便复习前面各章内容.容器类型的具体实现不需要特别关注(目前不需要会裸手写这么一个容器类型) 1.群体/线性群体 群体的概念 群体是指由多个数据元素组成的集合体.群体 ...

  5. android HttpURLConnection ,HttpClient设置Cookie

    上一阶段项目设计使用cookie信息实现登录访问功能,在实现过程遇到一些问题,下面整理一下: 首先,client想使用cookie,必须访问一次server从会话中获取cookie信息,然后在设置回去 ...

  6. 复制 GUI 状态

    FORM frm_set_pf_status USING pt_extab TYPE slis_t_extab. *--·状态 'STANDARD'是从系统功能组 KKBL GUI状态下的" ...

  7. Blender2.8 使用笔记

    基本 视口 小键盘/: 隔离 Z:切换线框与实体显示 Ctrl+Alt+Q : 多视图切换 Shift+C:回原点 Shift+鼠标中键 视口平移 Ctrl+上下移动 视口放大缩小 导出FBX 几何数 ...

  8. QFramework UI 笔记(后续不断 直到UKitI篇结束)

    1.所有的UIElement  传消息给 UIPanel 时,必须先注册 SendEvent();      RegisterEvent(); 2.注意Unity直接生成控件的名称,命名带(1)之类的 ...

  9. vue3封装input组件

    使用了2种方法去封装input组件(.vue与.jsx) 代码如下 父组件: <template> <div> <h1>input组件封装</h1> & ...

  10. 个人js基础知识及看js高级程序设计查漏 汇总

    1.事件循环机制 js单线程操作. 1>主线程读取js代码 ,此时为同步环境,形成相应的堆和执行栈. 2>主线程遇到异步任务,指给对应的异步进程处理. 3>异步进程处理完毕后,将相应 ...