svn与git区别简介,git分支操作在mac客户端soureTree和使用命令行如何实现
svn与git区别简介:
性能方面(经过实践的)
svn:下载速度慢,因为它其中的源文件太多,并且在show log日志的时候每次都需要去服务器拉取,速度很慢
git:下载速度快,并且git clone项目后在本地可形成自己的服务器,这时show log日志的时候就不需要去中心服务器上拉取,很快便可查看
依赖性方面
svn:集中式管理,会有一个svn服务器,用户从svn服务器上checkout到本地之后,修改后提交到svn服务器,这时所有可以操作这个项目的人有改动都会提交到这个svn服务器,会造成冲突
git:分布式管理,有一个中心服务器,用户从中心服务器上git clone项目后在本地可形成自己的服务器,每个人在本地操作文件时只有等到确认无误需要提交时才需要push到远程服务器,其他时候均可在本地完成
分支的使用方面
svn:svn创建分支需要在svn服务器上复制需要的分支再创建新的分支,这样的话别人一更新便会把创建的新分支也更新下来,这样再想删除分支便需要考虑太多
git:git可在本地根据需要创建分支,在新建的分支上进行开发,如果新建分支上的开发需要上线,再将新建分支上的内容合并到主分支上进行合并提交
查看分支:git branch 创建分支:git branch <name> 切换分支:git checkout <name> 创建+切换分支:git checkout -b <name> 合并某分支到当前分支:git merge <name> 检出某分支的某个文件到当前分支:git checkout <branchName> <fileName> 删除分支:git branch -d <name>
git分支操作:创建分支、合并分支、删除分支
一、在git客户端mac版soureTree上来实现创建分支、合并分支、删除分支

1.导入一个仓库,我绑定的账户是自己的github账号,导入的也是github上的一个项目为例
2.查看当前文件和分支branch
当前只有一个master主分支和几个文件


3.这时候我想写一个测试例子,并不想污染主分支的内容,那么就可以新建一个分支进行开发
创建一个新的分支test

4.这时候,可以看出我当前是在test分支上新建了一个文件testSubBranch.html,在文件状态里面将会实时展现出来更改后的和需要提交的文件。这时,选中testSubBranch.html,可在下面填写修改的log,有一个可选项'立即推送变更到 origin/test',具体如图中缩写,我这时候没有勾此项进行提交

5.查看远程github上的项目目录,发现目前还是只有一个master主分支,并且没有我新建的html文件。也就是,我提交只是提交到自己本地版本控制里面test分支上了,并没有影响远程服务器

6.如果确定没问题了,想要传到远程服务器上并且也将test分支推送上去,则选择推送到origin/test。

7.查看远程项目,可看到已有test分支,并且分支下的内容包括了新建分支时继承的master分支的内容,还有我新建的testSubBranch.html文件


8.分支合并,将test分支合并到master分支,选中master分支,在test分支上右键可以看到合并test到master,点击即可将test下的内容合并到master分支上

二、命令行实现git分支操作
1.创建分支并切换到新建的分支
创建并切换分支命令:git checkout -b 分支名;相当于:git branch 分支名,git checkout 分支名
查看分支命令:git branch

2.在新分支上新增文件并进行提交
目前已处在firstBranch分支上,在文件夹中新建firstBranch.html
查看当前分支下有修改的文件状态:git status
新增新建的文件:git add 文件名
提交文件但只在本地提交并没有提交到远程中心服务器上:git commit -m '描述'

查看新分支firstBranch分支上的文件:
可以看到有新建的firstBranch.html

3.切换分支到master主分支上
查看master主分支上的文件发现并没有新建的firstBranch.html,这是因为我们提交的内容在firstBranch分支上,而master分支上并没有此提交或者合并

4.合并分支
整个分支进行合并:
切换到master分支上之后进行合并分支:git merge 需要合并的分支

使用命令:git branch可以查看当前是在master分支,再使用ls命令查看当前文件夹下的文件,可以看到我们在firstBranch分支上新建的firstBranch.html文件了

分支中的部分文件进行合并:
(1)新建new1.html,new2.html,最终我只是想把new1.html合并到master主分支中,并不是把firstBranch分支都合并到master主分支中去


(2)切换到master主分支——没有看到new1.html

《1》git checkout 分支名 需合并的文件名
《2》git status:查看文件的修改状态
《3》git add *:新增文件
《4》git commit -m '描述':提交文件到本地版本控制中
《5》ls:查看当前文件夹下的文件可以看到new1.html了,这也就是说new1.html已经添加到master主分支了
《6》git push:将修改的文件提交到远程服务器上

远程服务器上的文件列表:

5.提交分支修改文件到远程服务器
使用git push将合并后需要提交到远程服务器的文件提交到远程服务器,供partner更新使用查看

5.删除分支
删除分支命令:git branch -d 分支名;再使用git branch命令查看当前就只剩下master一个分支了

因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。
实践得知,git创建分支是为了我们可以同时多向开发而互不影响,在我们确认无误可以跟大家共享的时候,再将新建分支开发的内容合并到主开发分支上。并且各个分支之间开发互不影响。
参考文档:git教程
svn与git区别简介,git分支操作在mac客户端soureTree和使用命令行如何实现的更多相关文章
- Go语言中的IO操作、Flag包以及urfave/cli命令行框架
一.格式化输入和输出 1.从终端获取用户的输入 fmt.Scanf 空格作为分隔符,占位符和格式化输出的一致 fmt.Scan 从终端获取用户的输入,存储在Scanln中的参数里,空格和换行符作为 ...
- GIT分支操作常用命令
切换分支:git checkout name 撤销修改:git checkout -- file 删除文件:git rm file 查看状态:git status 添加记录:git add file ...
- windows下使用TortoiseGit代替Git命令行操作
windows下使用TortoiseGit代替Git命令行操作 大家在使用svn的时候,都非常喜欢使用小乌龟,也就是TortoiseSVN:那么git也有小乌龟版本,即TortoiseGit. 1.安 ...
- 命令行高效操作Git,看这篇就够了
原文地址:http://blog.jboost.cn/2019/06/16/use-git.html 对于软件开发人员来说,git几乎是每天都需要接触的工具.但对于相处如此亲密的工作伙伴,你对它的了解 ...
- git rebase简介(高级篇)
原文:http://gitbook.liuhui998.com/4_3.html 一.基本 对于git rebase,你亦可以选择进行交互式的rebase.这种方法通常用于在向别处推送提交之前对它 ...
- [.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit
[.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit 读前必备: 接上篇: 分布式版本控制系统Git——使用GitS ...
- 学Git,用Git ①
本月开始接触到Git版本管理工具,觉得很有意思,在这里总结一下学习Git的一些心得体会. 要在Mac上完整的使用git进行版本管理,需要熟悉Mac终端操作命令和Git操作命令两种命令,索性两种命令加在 ...
- 分布式版本控制系统Git——图形化Git客户端工具TortoiseGit
本篇导读: 上篇介绍了一款Windows环境下的Git服务器工具GitStack ,搭建了最简单的Windows下的Git服务器,需要再次提醒的是GitStack是打包了相对较稳定的Git原生版本的, ...
- [Tool] Git 使用 与 Git Flow
目录 简介 Git 命令 Git Flow 简介 Git是目前世界上最先进的分布式版本控制系统(没有之一). Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Lin ...
随机推荐
- [poj2891]Strange Way to Express Integers(扩展中国剩余定理)
题意:求解一般模线性同余方程组 解题关键:扩展中国剩余定理求解.两两求解. $\left\{ {\begin{array}{*{20}{l}}{x = {r_1}\,\bmod \,{m_1}}\\{ ...
- 《Java多线程编程核心技术》读后感(六)
多线程的死锁 package Second; public class DealThread implements Runnable { public String username; public ...
- Laravel框架中使用邮件发送功能
这里是演示的用户注册之后,进行邮件激活的功能. 点击注册之后,系统会自动发送一个份邮件到注册者的邮箱,注册者点击链接激活账号. 先配置laravel中的(.env)文件 MAIL_DRIVER=smt ...
- C#连接Oracle数据库解决报错(需要安装Oracle客户端软件8.1.7)的问题
1.通过nuget安装 ManagedDataAccess 2.引用 using Oracle.ManagedDataAccess.Client; 注:最低framework4.0 测试连接: // ...
- EF外键保存数据
using (DataContext dbcontext=new DataContext ()) { //emp.department.ID = dep.ID; //emp.department = ...
- uoj#290. 【ZJOI2017】仙人掌(数数+仙人掌+树形dp)
传送门 这图可以说是非常形象了2333 模拟赛的时候打了个表发现为一条链的时候答案是\(2^{n-2}\)竟然顺便过了第一个点 然后之后订正的时候强联通分量打错了调了一个上午 首先不难发现我们可以去掉 ...
- Docker安装nginx以及负载均衡
首先在linux系统中新建一个data文件夹进行nginx容器的创建--即为:mkdir data. 一:第一次 1 第一步: 使用 docker pull nginx将nginx的镜像从仓库下载下来 ...
- 黑马Mybatis day3 多表查询 1.xml配置方式 2.注解方式
package com.itheima.mozq; import com.itheima.domain.Order; import com.itheima.mapper.OrderMapper; im ...
- mac下配置php+mysql+nginx遇到的问题
1.mysql:没有useradd和groupadd命令,好在原来的/etc/passwd有了mysql,www用户,/etc/group下也有了mysql,www用户组 2.nginx:编译ngin ...
- Python 工具包 werkzeug 初探
首先,先向大家介绍一下什么是 werkzeug,Werkzeug是一个WSGI工具包,他可以作为一个Web框架的底层库.这里稍微说一下, werkzeug 不是一个web服务器,也不是一个web框架, ...