git的优缺点

- 从一般开发者的角度来看,git有以下功能:
- 从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
- 在自己的机器上根据不同的开发目的,创建分支,修改代码。
- 在单机上自己创建的分支上提交代码。
- 在单机上合并分支。
- 把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
- 生成补丁(patch),把补丁发送给主开发者。
- 看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
- 一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
- 从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:
- 查看邮件或者通过其它方式查看一般开发者的提交状态。
- 打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。
- 向公共服务器提交结果,然后通知所有开发人员。
- 优点:
- 适合分布式开发,强调个体。
- 公共服务器压力和数据量都不会太大。
- 速度快、灵活。
- 任意两个开发者之间可以很容易的解决冲突。
- 离线工作。
- 缺点:
- 资料少(起码中文资料很少)。
- 学习周期相对而言比较长。
- 不符合常规思维。
- 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
使用版本控制管理工具git来管理项目
一、 安装
Git(git_for_windows.xp510.com.rar)
二、 使用
a) 进入到 git bash(命令行工具)
b) 初始化user.name,user.email
$ git config --global user.name "AmbitionG"
$ git config --global user.email "2438387860@qq.com"
三、 开发项目
c) 进入HBulid新建项目(如:e:\web20170210),把git bash工具的当前路径转入到你的项目目录
命令:
cd e:\healthy
四、 给项目配置git仓库
d) 初始化仓库:git init
i. 在git bash里,转换路径: cd e:/ web20170210
ii. 输入 git init。就会在e:/ web20170210下产生目录 .git(隐藏目录),表示e:\ web20170210里的项目代码(即所有的文件)会使用git进行版本管理。
注意:在初始化仓库后 尽量新建一个master的分支yourname 然后所有的剩余操作在yourname中执行
在git bash里输入$ git checkout -b -yourname
五、 把开发的代码放在本地版本库
e) Git add
假设在项目下有个index.html文件。在 git Bash,输入:git add index.html
f) Git commit(提交)
i. 在git Bash里输入:$ git commit -m "这是新建的index.html"。其中"这是新建的index.html"只是说明或者说解释。
理解:add和commit;
Add:添加;相当于打了标记,告诉git,下次提交时把该文件进行提交。
Commit:提交。把打过标记的(即用add进行添加的文件),一次性进行提交。
g)
六、 恢复(跳转)到某个版本的文件
1)、查看所有的版本的命令
git log
2)、要恢复到上一个版本
git reset --hard HEAD^
3)、恢复到指定版本
git reset --hard 版本序列号
七、 把本地版本库的代码放在远程库
1. 进入github官网(https://github.com/)
2. 注册账号
3. 登录(Sign in)
4. 创建本地与远程的连接(用ssh)(搭桥)
1) 在本地创建ssh key(公钥)。
创建SSH Key: $ ssh-keygen -t rsa -C 2438387860@qq.com你需要把邮件地址换成你⾃⼰的邮件地址,然后⼀路回车,使⽤默认值即可.
在⽤户主目录下(/c/Users/Administrator/.ssh/id_rsa)),看看有没有.ssh目录,如果有,再看看这个目录下 有没有id_rsa和id_rsa.pub这两个⽂件,如果已经有了,可直接 跳到下⼀步。
2) 在远程创建ssh key:
登陆GitHub,打开“Account settings”,“SSH Keys”⾯: 然后,点“Add SSH Key”,填上任意Title,在Key⽂本框⾥粘贴id_rsa.pub⽂件的内容:
点击“add SSH Key”
5. 创建远程仓库:
1) 在页面中找 “new repository”
2) 输入仓库名
点击“create repository”
3) 添加远程库的命令(可以认为是把远程库和地址进行对应)
在git bash里输入以下命令:(切记:把git bash的当前路径转到你的项目路径(带有.git文件夹)下)
git remote add origin git@github.com:tianwater/bigMi.git
origin:是远程的库名(可以认为是别名,可以更改);
git@github.com:tianwater/bigMi.git:是上一个截图中的ssh地址;
6. 把本地库的内容推送到远程库(确保本地执行过git add和git commit)
git push -u origin master
注意:origin是远程库名,根据实际情况进行更改
注意:确保本地执行过git add和git commit,即,本地版本库要有的版本。
八、 克隆远程库
前面六步中讲了先有本地库,后有远程库的时候,如何关联远程库。 现在,假设我们从零开发,那么最好的⽅式是先创建远程库,然后,从远程库克隆到本地。
1. ⾸先,登陆GitHub,创建⼀个新的仓库,名字叫mytaobao:
注意:勾选Initialize this repository with a README,这样GitHub会⾃动为我们创建⼀个 README.md⽂件。创建完毕后,可以看到README.md⽂件:
2. git clone克隆⼀个本地库
$ git clone git@github.com:tianwater/mytaobao.git
这样就会在当前目录下创建一个本地的git版本库。
注意:把git bash 的当前路径要转到你的项目目录下
一、 总结:
以后,每天做的git相关工作
1)、git add *
2)、git commit –m “版本描述”
3)、git push -u origin master
git的优缺点的更多相关文章
- Git是什么、Git的功能、为什么versioncontrol用Git、Git的常用命令、Git的优缺点
Git是什么 git是目前世界上最先进的分布式版本控制系统(没有之一). Git是用于 Linux内核开发的版本控制工具.与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版 ...
- svn和git的优缺点
git官网api: https://git-scm.com/docs 一. 集中式vs分布式 1. Subversion属于集中式的版本控制系统集中式的版本控制系统都有一个单一的集中管理的服务器,保存 ...
- 02 SVN 与 Git 的优缺点
上一篇博客大致聊了聊关于版本控制系统的周边,这一篇我们就来继续唠唠作为近年来最受欢迎的两个版本控制系统的优缺点吧. 聊优缺点之前,先简单了解一下这两个这两个版本控制系统好了: 关于 SVN SVN 概 ...
- SVN和Git 介绍,区别,优缺点以及适用范围
SVN是Subversion的简称,是一个开放源代码的版本控制系统,支持大多数常见的操作系统.作为一个开源的版本控制系统,Subversion管理着随时间改变的数据.这些数据放置在一个中央资料档案库( ...
- 版本管理——Git和SVN的介绍及其优缺点
版本管理 概念:版本管理是软件配置管理的基础,它管理并保护开发者的软件资源. 好处:可以保留我们的历史版本,在代码开发到一半的时候,不至于无故丢失,还可以查看BUG的来龙去脉. 版本管理种类: ...
- 项目开发版本控制----Git
版本控制的工具我早之前用的svn,后来换成了git.同样是版本控制,为什么要换呢?肯定是有原因的啦~ 一.Git和SVN的比较 svn的优缺点 优点: 1.管理方便,逻辑明确,符合一般人思维习惯. 2 ...
- Git和GitHub相关
组员从GitHub上下载项目并上传项目的步骤如下 .组员接收到组长发的项目地址,组员需要从GitHub上把项目克隆下来,首先组员 需要在本地的一个文件夹里打开git,然后运行如下代码:git clon ...
- git之对比svn
关于git的发展和历史介绍网上有很多资料,大家可以自行去了解,这里给大家一个传送门git介绍在这里我就不多说了.我们今天本篇文章的定位就是帮助大家来了解一下关于git和svn之间的区别及git的安装. ...
- 分布式版本控制系统git
最近看到这篇文章,简洁易懂,特摘抄至https://www.cnblogs.com/bgwhite/p/9403233.html 供大家提供参考. git可以说是世界上最先进的版本控制系统,大多语句的 ...
随机推荐
- RESTful API 设计指南-阮一峰
作者: 阮一峰 日期: 2014年5月22日 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制 ...
- 自制操作系统Antz(5)——深入理解保护模式与进入方法
Antz系统更新地址: https://www.cnblogs.com/LexMoon/category/1262287.html Linux内核源码分析地址:https://www.cnblogs. ...
- Spring错误——Spring AOP——org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException
背景:学习切面,测试前置通知功能,xml配置如下 <?xml version="1.0" encoding="UTF-8"?> <beans ...
- centos6.5下安装tomcat
linux在安装tomcat之前必须已安装jdk 已下载好tomcat 拖到centos系统的桌面 现在在桌面目录下 mv apache-tomcat-8.5.39.tar.gz /usr/local ...
- 小程序之 tab切换(选项卡)
好久没有写东西了 今天写一个简单的东西 小程序tab切换 (选项卡功能) .wxml <view class="swiper-tab"> <view < ...
- 《Visual C# 从入门到精通》第三章使用判断语句——读书笔记
第3章 使用判断语句 3.1 使用布尔操作符 布尔操作符是求值为true或false的操作符. C#提供了几个非常有用的布尔操作符,其中最简单的是NOT(求反)操作符,它用感叹号(!)表示.!操作符求 ...
- 读写方式 r , r+ , w , w+ , a , a+
r只读,r+读写,不创建:r+:可读可写,若文件不存在,报错 w如果文件已经存在,则不替换: w 就是打开文件,文件如果不存在,就会新建一个文件: w+: 可读可写,若文件不存在,创建 信息来源:ht ...
- linux基础11-bash编程(字符串测试 和 for循环)
练习:传递一个用户名参数给脚本,判断此用户的用户名跟其基本组的组名是否一致,并将结果显示出来.(1)字符测试:==:测试是否相等,相等为真,不等为假!=: 测试是否不等,不等为真,等为假>< ...
- linux存储管理之磁盘阵列
磁盘阵列 RAID ====================================================================================RAID:廉 ...
- hello2部分代码解析
/** * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.** You may not modify, us ...