之前一直使用微软的代码管理工具TFS(Team Foundation Server)。.NET CORE 2.0的发布后,考虑到.NET CORE项目可以跨平台,准备把项目迁移到.NET CORE 环境下重构。代码管理工具也准备使用git。下面主要学习代码管理工具,不涉及.NET CORE。
本文目录:
一、为什么使用代码管理工具?
二、常见的源代码管理工具有哪些?
三、Git命令行管理代码、安装及使用
四、Git的可视化工具SourceTree管理代码 SourceTree的使用
五、git、github、gitlab之间的关系
一、为什么使用代码管理工具?
1、能记录一个项目从开始到结束的整个过程。
2、追踪项目中所有内容的变化情况,如增加了什么内容,删除了什么内容,修改了什么内容等等。
3、版本控制,可以清楚的知道每个版本之间的异同点,如版本2.0相比较版本1.0多了什么内容,功能等。
4、 权限控制,防止代码混乱,提高安全性,防止一些不必要的损失和麻烦,简单的理解就是为什么职位做什么事情,不能越界。如控制程序员A对正在开发的项目具有开发的权限,其他项目不具有开发的权限,如果不进行控制的话,那么对其他项目的开发权限也对程序员A开放,如果程序员A对其他项目不小心进行了错误的操作 如删除,就会造成一些损失。
5、责任追究,防止互相推卸责任,可以清楚的知道谁对哪个文件进行了什么修改,导致了项目无法正常运行。
6、回退处理,执行了错误的操作之后还可以有补救的机会,如从版本1.0升级到版本2.0,后来发现版本2.0有一个错误,这时候可以进行回退处理,比较方便。
7、冲突解决,在团队的多人协同开发中,冲突是经常有的事情,比如存在着相同的文件名称,同一个文件中有着相同功能的函数等等,这时候使用源代码管理工具可以比较方便的解决冲突。冲突的解决一般按照“复制-修改-合并”原则进行。
二、常见的源代码管理工具有哪些?
1、常见的源代码管理工具有哪些
(1)CVS
- 开启版本控制之门
- 1990年诞生,“远古时代”的主流源代码管理工具
(2)SVN
- 全称是Subversion,集中式版本控制之王者
- 是CVS的接班人,速度比CVS快,功能比CVS多且强大
- 在国内软件企业中使用最为普遍(70%-90%)
(3)Git
-是目前世界上最先进的分布式版本控制系统(没有之一)
(4)ClearCase
- 收费的集中式版本控制工具,安装比Windows还大,运行比蜗牛还慢
- 能用ClearCase的一般是世界500强,他们有个共同的特点是财大气粗
(5)VSS
- 微软的集中式版本控制工具,集成在Visual Studio中
2、SVN或者Git进行源代码的管理基本区别
(1)GIT是分布式的而SVN是集中式。
1.1集中式:一台服务器控制着所有的代码,这台服务器的代码是最新的,其他电脑的代码操作(如下载、提交)都需要通过这台服务器才可以执行。 1.2分布式:每台电脑都相当于一个服务器,代码是最新的,比较灵活。 对比:Git的速度比SVN快;Git比SVN灵活;SVN一旦没有网络或者服务器挂了的话,其他电脑都无法执行操作,但是Git可以先提交到本地版本库,等待联网的时候再提交到远程代码仓库。
(2)GIT把内容按元数据方式存储,而SVN是按文件
所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因为.git目录是处于你的机器上的一个克隆版的版本库,
它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。
(3)GIT分支和SVN的分支不同
分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。
然而,处理GIT的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。
3、常见的Git管理工具
(1)Git Base
Git Base采用命令行的方式进行版本管理,功能操作最为灵活强大,下载地址http://git-scm.com/download/win
(2)EGit
EGit是Eclipse的Git插件,在Eclipse中开发时直接操作EGit很方便,尤其对于有SVN开发情节的开发人员来说更加热衷于使用,但是EGit存在很多bug和不人性化的东西,需谨慎使用!
(3)TortoiseGit
在Windows上面,图像化软件TortoiseGit相比GitHub客户端使用较为方便,下载地址:http://git-scm.com/download/win
(4)SourceTree
在Mac Ios系统上,图形化软件SourceTree较为便捷(SourceTree当前不支持“开源中国--代码托管”,支持GitHub等),堪比EGit和Git Base的合体,机油图形化界面,又有命令行工具,下载地址:http://www.unlimax.com/sourcetree.html
SourceTree官网地址需要“FQ”才能访问,现提供SourceTree最新版本CSDN下载链接地址:http://download.csdn.net/detail/wenbitianxiafeng/8475481
4、SVN的管理工具
(1)TortoiseSvn
三、Git命令行管理代码、安装及使用
1、下载安装Git
(1)下载Git 官方地址为:https://git-scm.com/download/win
(2)下载完之后,双击安装
(3)选择安装目录
(4)选择组件
(5)开始菜单目录名设置
(6)选择使用命令行环境
(7)以下三步默认,直接点击下一步
(8)安装完成
(9)检验是否安装成功
回到电脑桌面,鼠标右击如果看到有两个git单词则安装成功
2、Git基本工作流程
(1)Git工作区域
(2)向仓库中添加文件流程
3、Git初始化及仓库创建和操作
Git安装之后需要进行一些基本信息设置
a、设置用户名:git config -- global user.name '你再github上注册的用户名';
b、设置用户邮箱:git config -- global user.email '注册时候的邮箱'; 注意:该配置会在github主页上显示谁提交了该文件
c、配置ok之后,我们用如下命令来看看是否配置成功 git config --list
注意:git config --global 参数,有了这个参数表示你这台机器上所有的git仓库都会使用这个配置,当然你也可以对某个仓库指定不同的用户名和邮箱
(1)初始化一个新的git仓库
a、创建文件夹
方法一:可以鼠标右击-》点击新建文件夹test1
方法二:使用git新建:$ mkdir test1
b、在文件内初始化git(创建git仓库)
方法一:直接输入 $ cd test1
方法一:点击test1文件下进去之后-》鼠标右击选择Git Bash Here->输入$ git int
(2)向仓库中添加文件
方法一:用打开编辑器新建index.html文件
方法二:使用git命令。$ touch '文件名',然后把文件通过$ git add '文件名'添加到暂存区,最后提交操作
(3)修改仓库文件
方法一:用编辑器打开index.html进行修改
方法二:使用git命令。$ vi '文件名',然后在中间写内容,最后提交操作
(4)删除仓库文件
方法一:在编辑器中直接把要删除的文件删除掉
方法二:使用git删除:$ git rm '文件名',然后提交操作
4、Git管理远程仓库
使用远程仓库的目的:备份、实现代码共享集中化管理,Git远程仓库实际上就是保持在服务器上的git仓库文件
5、Git克隆操作,目的:将远程仓库(github上对应的项目)复制到本地
(1)代码:git clone 仓库地址仓库地址由来如下:
(2)克隆项目
(3)将本地仓库同步到git远程仓库中:git push
(4)期间出现错误的情况有:
a、出现提交错误
解决:这是通过Git GUI进行提交时发生的错误,由 .git 文件夹中的文件被设为“只读”所致,将 .git 文件夹下的所有文件、文件夹及其子文件的只读属性去掉即可。
b、如果出现无法同步或没有权限,解决方法如下: 用户名和密码一定要和github上的一致。
c、如何解决failed to push some refs to git 在使用git 对源代码进行push到gitHub时可能会出错,信息如下
出现错误的主要原因:github中的README.md文件不在本地代码目录中
解决办法:首先使用git pull拉取github上的内容、然后再使用git push即可
四、Git的可视化工具SourceTree管理代码 SourceTree的使用
上边我们说了使用git命令创建、管理代码的方式,不过挺麻烦的,这里介绍SourceTree代码管理工具,具体怎么使用SourceTree,这里就不介绍了,网上有很多教程,请参阅https://www.cnblogs.com/tian-xie/p/6264104.html
五、git、github、gitlab之间的关系
GIt-版本控制工具;GitHub-一个网站平台,提供给用户空间存储git仓储,保存用户的一些数据文档或者代码等;GitLab - 基于Git的项目管理软件。
1、Git分布式版本控制系统
(1)Git是一款*和开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,是版本控制工具
(2)Github 是 一个网站,提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等。GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。
(3)GitLab - 基于Git的项目管理软件,GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
三者都是基于git的,可以说是git的衍生品。
2、Github和GitLab的异同点
(1)相同点:二者都是基于web的Git仓库,在很大程度上GitLab是仿照GitHub来做的,它们都提供了分享开源项目的平台,为开发团队提供了存储、分享、发布和合作开发项目的中心化云存储的场所。
(2) 不同点:GitHub作为开源代码库及版本控制系统,拥有超过900万的开发者用户,目前仍然是最火的开源项目托管系统。GitHub同时提供公共仓库和私有仓库,但如果要使用私有仓库,是需要付费的。
而GitLab解决了这个问题,你可以在上面创建私人的免费仓库。GitLab让开发团队对他们的代码仓库拥有更多的控制,相比于GitHub,它有不少的特色:允许免费设置仓库权限;允许用户选择分享一个project的部分代码;允许用户设置project的获取权限,进一步的提升安全性;可以设置获取到团队整体的改进进度;通过innersourcing让不在权限范围内的人访问不到该资源。从代码私有性方面来看,有时公司并不希望员工获取到全部的代码,这个时候GitLab无疑是更好的选择。但对于开源项目而言,GitHub依然是代码托管的首选。
代码管理工具 Git的更多相关文章
-
通过代码管理工具 git 完成一次完整的代码管理过程
1.从公共远程fork一份自己的本地远程之后,从本地远程 clone 到本地 2.将本地代码跟公共远程代码做关联配置 git remote add upstream https://github.co ...
-
代码管理工具 --- git的学习笔记二《git的工作原理》
通过几个问题来学习代码管理工具之git 一.git是什么?为什么要用它?使用它的好处?它与svn的区别,在Mac上,比较好用的git图形界面客户端有 git 是分布式的代码管理工具,使用它是因为,它便 ...
-
代码管理工具Git的安装及使用
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在*服务器的,而干活的时候,用的都是自己的电脑,所以 ...
-
使用代码管理工具(git)管理代码的常用指令合集
create a new repository on the command line echo "# test" >> README.md git init git ...
-
项目代码管理工具Git的总结
在项目的开发中,代码的同步管理很重要,团队的几个人可以通过免费的github管理自己的开源项目代码,高效方便.下面说说,开发中经常用到的git指令操作,基于github平台. 0.配置提交者的账户和邮 ...
-
java接口自动化(五) - 企业级代码管理工具Git的配置
1.简介 上一篇讲解完如何安装Git后,今天宏哥趁热打铁讲解一下Git的使用,要想使用Git,我们还需要做一些准备工作,首先你的拥有一个Git账号,所以如果你没有的话,就快速注册一个吧. 2.Git注 ...
-
代码管理工具 --- git的学习笔记一《git的个人开发》
重点摘要: 创建了一个文件后首先先通过git add . 添加到暂缓区,然后通过git commit -m "提交的名字" 提交到本地仓库,最后才可能push到远程仓库. 1. 个 ...
-
关于分布式代码管理工具git
一.安装 Step1 进入官网https://www.git-scm.com/download/下载,然后安装,一直“下一步”即可 Step2 验证是否安装成功,在任意地方右键,菜单中含有Git ...
-
代码管理工具之git的学习
1.代码管理工具git的学习 http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 2.github的使用帮助 https:// ...
随机推荐
-
[TypeScript] Dictionary范例
[TypeScript] Dictionary范例 Playground http://tinyurl.com/o7czcxo Samples class Dictionary { [index: s ...
-
Android 学习笔记之如何实现简单相机功能
PS:看来算法和数据结构还是非常有用的,以后每天都练习两道算法题目...这次忘了对代码进行折叠了..导致篇幅过长... 学习内容: 1.Android如何实现相机功能... 2.如何实现音频的录制.. ...
-
在windows 7搭建xcode开发环境
前言:本文适用于没有ios开发环境(如无iphone,mac等),在windows上搭建出ios的开发环境.值得注意的是,在windows搭建的ios开发环境只能做开发测试,无法发布产品.若需要发布产 ...
-
文件上传~Uploadify上传控件
对于文件上传来说,有很多种实现方式,如传统的表单方式,现在流行的flash方式,甚至还有纯JS方式,之所以有这些方式来实现文件上传,我想主要原因是因为,传统的上传对于大文件支持不够,因为它是单线程同步 ...
-
LinGo:投资问题——线性规划
一.根据题目所给数据,建立一张表格方便查看 项目A 项目B 项目C 项目D 可投资年 1,2,3,4 3 2 1,2,3,4,5 收回本利年 次年年末 第5年 第5年 当年年末 本利 1.06 1.1 ...
-
Mark Russinovich 的博客:Windows Azure 主机更新:原因、时间和方式
Mark Russinovich的技术博客涵盖 Windows故障排除.技术和安全等主题. Windows Azure主机更新:原因.时间和方式 Windows Azure的计算平台(其中包括 ...
-
在linux下用tomcat部署java web项目的过程与注意事项
在linux下用tomcat部署java web项目的过程与注意事项 一.安装JDK 到http://www.oracle.com/technetwork/java/javase/downloads/ ...
-
centos5.5關閉ssh保留運行的程序
SSH会话关闭时,ssh所关联的pty关闭,系统会给这个pty所关联的session中的所有进程发送SIGHUP信号, SIGHUP的默认信号处理程序是终止进程,除非进程自己处理了SIGHUP. 解决 ...
-
使用ServletContext对象读取资源文件
备注:本文以properties文件为例 一.通过ServletContext读取文件 1.通过ServletContext读取放置在src下的properties文件 package com; im ...
-
Python编程练习:编程实现恺撒密码
问题描述:凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下: 原文:A B C D ...