Git和SVN你喜欢用哪个?喜欢命令的建议收藏哦。

和大家一起分享一个关于git和svn简单命令和区别

Git vs SVN

Git 和 SVN 孰优孰好,每个人有不同的体验。
一、Git是分布式的,SVN是集中式的
这是 Git 和 SVN 最大的区别。若能掌握这个概念,两者区别基本搞懂大半。因为 Git 是分布式的,所以 Git 支持离线工作,在本地可以进行很多操作,包括接下来将要重磅推出的分支功能。而 SVN 必须联网才能正常工作。
二、Git复杂概念多,SVN简单易上手
所有同时掌握 Git 和 SVN 的开发者都必须承认,Git 的命令实在太多了,日常工作需要掌握 add, commit, status, fetch, push, rebase等,若要熟练掌握,还必须掌握 rebase和 merge的区别, fetch和 pull的区别等,除此之外,还有 cherry-pick, submodule, stash等功能,仅是这些名词听着都很绕。
在易用性这方面,SVN 会好得多,简单易上手,对新手很友好。但是从另外一方面看,Git 命令多意味着功能多,若我们能掌握大部分 Git 的功能,体会到其中的奥妙,会发现再也回不去 SVN 的时代了。
三、Git分支廉价,SVN分支昂贵
在版本管理里,分支是很常使用的功能。在发布版本前,需要发布分支,进行大需求开发,需要 feature 分支,大团队还会有开发分支,稳定分支等。在大团队开发过程中,常常存在创建分支,切换分支的需求。
Git 分支是指针指向某次提交,而 SVN 分支是拷贝的目录。这个特性使 Git 的分支切换非常迅速,且创建成本非常低。
而且 Git 有本地分支,SVN 无本地分支。在实际开发过程中,经常会遇到有些代码没写完,但是需紧急处理其他问题,若我们使用 Git,便可以创建本地分支存储没写完的代码,待问题处理完后,再回到本地分支继续完成代码。


Git核心思想

Git 最核心的一个概念就是工作流。
工作区(Workspace) 是电脑中实际的目录。
暂存区(Index) 类似于缓存区域,临时保存你的改动。
仓库区(Repository),分为本地仓库和远程仓库。
从 SVN 切换到 Git,最难理解并且最不能理解的是暂存区和本地仓库。熟练使用 Git 后,会发现这简直是神设计,由于这两者的存在,使许多工作变得易管理。
通常提交代码分为几步:
git add 从工作区提交到暂存区
git commit 从暂存区提交到本地仓库
git push或 git svn dcommit 从本地仓库提交到远程仓库
一般来说,记住以下命令,便可进行日常工作了(图片来源于网络):


Git-SVN常用命令

看到Git-SVN不要懵!是的,在Git中甚至有命令可以直接和SVN进行桥接,Git 中所有与SVN桥接的基础命令就是 git svn
若服务器使用的 SVN,但是本地想要体验 Git 的本地分支,离线操作等功能,可以使用 Git-SVN功能。
常用操作如下(图片来源于网络):

下载一个 SVN 项目和它的整个代码历史,并初始化为 Git 代码库
$ git svn clone -s [repository]

查看当前版本库情况
$ git svn info

取回远程仓库所有分支的变化
$ git svn fetch

取回远程仓库当前分支的变化,并与本地分支变基合并
$ git svn rebase

上传当前分支的本地仓库到远程仓库
$ git svn dcommit

拉取新分支,并提交到远程仓库
$ svn copy [remote_branch] [new_remote_branch] -m [message]

创建远程分支对应的本地分支
$ git checkout -b [local_branch] [remote_branch]


初 始 化

从本节开始,除特殊说明,以下命令均适用于 Git 与 Git-SVN。
在当前目录新建一个Git代码库
$ git init

下载一个项目和它的整个代码历史 [Git only]
$ git clone [url]


配 置

列举所有配置
$ git config -l

为命令配置别名
$ git config --globalalias.co checkout
$ git config --globalalias.ci commit
$ git config --globalalias.st status
$ git config --globalalias.br branch

设置提交代码时的用户信息
$ git config [–global] user.name “[name]”
$ git config [–global] user.email “[email address]”
Git 用户的配置文件位于 ~/.gitconfig
Git 单个仓库的配置文件位于 ~/$PROJECT_PATH/.git/config


增删文件

添加当前目录的所有文件到暂存区
$ git add .

添加指定文件到暂存区
$ git add …

添加指定目录到暂存区,包括其子目录
$ git add

删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] …

停止追踪指定文件,但该文件会保留在工作区
$ git rm --cached [file]

改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]
把文件名 file1 添加到 .gitignore 文件里,Git 会停止跟踪 file1 的状态。


分 支

列出所有本地分支
$ git branch

列出所有本地分支和远程分支
$ git branch -a

新建一个分支,但依然停留在当前分支
$ git branch [branch-name]

新建一个分支,并切换到该分支
$ git checkout -b [new_branch] [remote-branch]

切换到指定分支,并更新工作区
$ git checkout [branch-name]

合并指定分支到当前分支
$ git merge [branch]

选择一个 commit,合并进当前分支
$ git cherry-pick [commit]

删除本地分支,-D 参数强制删除分支
$ git branch -d [branch-name]

删除远程分支
$ git push [remote] :[remote-branch]


提 交

提交暂存区到仓库区
$ git commit -m [message]

提交工作区与暂存区的变化直接到仓库区
$ git commit -a

提交时显示所有 diff 信息
$ git commit -v

提交暂存区修改到仓库区,合并到上次修改,并修改上次的提交信息
$ git commit --amend -m [message]

上传本地指定分支到远程仓库
$ git push [remote] [remote-branch]


拉 取

下载远程仓库的所有变动 (Git only)
$ git fetch [remote]

显示所有远程仓库 (Git only)
$ git remote -v

显示某个远程仓库的信息 (Git only)
$ git remote show [remote]

增加一个新的远程仓库,并命名 (Git only)
$ git remote add [remote-name] [url]

取回远程仓库的变化,并与本地分支合并,(Git only), 若使用 Git-SVN,请查看第三节
$ git pull [remote] [branch]

取回远程仓库的变化,并与本地分支变基合并,(Git only), 若使用 Git-SVN,请查看第三节
$ git pull --rebase [remote] [branch]


撤 销

恢复暂存区的指定文件到工作区
$ git checkout [file]

恢复暂存区当前目录的所有文件到工作区
$ git checkout .

恢复工作区到指定 commit
$ git checkout [commit]

重置暂存区的指定文件,与上一次 commit 保持一致,但工作区不变
$ git reset [file]

重置暂存区与工作区,与上一次 commit 保持一致
$ git reset --hard

重置当前分支的指针为指定 commit,同时重置暂存区,但工作区不变
$ git reset [commit]

重置当前分支的HEAD为指定 commit,同时重置暂存区和工作区,与指定 commit 一致
$ git reset --hard [commit]

新建一个 commit,用于撤销指定 commit
$ git revert [commit]

将未提交的变化放在储藏区
$ git stash

#将储藏区的内容恢复到当前工作区
$ git stash pop


查 询

查看工作区文件修改状态
$ git status

查看工作区文件修改具体内容
$ git diff [file]

查看暂存区文件修改内容
$ git diff --cached [file]

查看版本库修改记录
$ git log

查看某人提交记录
$ git log --author=someone

查看某个文件的历史具体修改内容
$ git log -p [file]

#查看某次提交具体修改内容
$ git show [commit]

Git和SVN区别和命令相关推荐

  1. java常见面试考点(十一):git与svn区别

    java常见面试考点 往期文章推荐:   java常见面试考点(六):深入理解String类型   java常见面试考点(七):递归与迭代   java常见面试考点(八):成员变量与局部变量   ja ...

  2. git和svn区别 git的常用指令

    git 常用命令 git 与svn diff 常用命令 添加到< 暂存区 > git add . 提交到< 本地git版本库 > git commit -m "$本地 ...

  3. git简介,git和SVN区别

    1.git简介 ,git与SVN区别                  Git是目前世界上最先进的分布式版本控制系统(没有之一). 那什么是版本控制系统?                       ...

  4. Git的学习与使用(一)——Git 与 SVN 区别

    Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件. Git ...

  5. Git 与 SVN 区别

    Git 与 SVN 区别 Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等. 如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概 ...

  6. 简述Git 与 SVN 区别

    Git 与 SVN 区别 Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等. 如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概 ...

  7. 五、Git 与 SVN 区别

    五.Git 与 SVN 区别 Git 与 SVN 区别点: · 1.Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别. · 2.Gi ...

  8. git 和 svn 区别

    入职到新公司,代码版本控制工具由svn转变成git了,不是很适应.按照使用频率依次递减的原则,总结一下二者的差别,才能更好的学会使用.从2个维度进行总结. 1,有无中心服务器.svn有,git无. s ...

  9. GitHub与Git区别,Git与SVN区别,Git国内镜像下载

    GitHub 又称 GayHub,作为众多开源代码的汇集地,名副其实被誉为全球最大的同性交友社区.我们在这里上传和下载代码,GitHub进行远程托管,拥有代码管理权的人可以对版本和内容进行控制,极大的 ...

  10. Git 入门 ---- Git 与 SVN 区别

    一. Git 是什么? Git 是目前世界上最先进的分布式版本控制系统 二. 基础知识 有中心的 SCM(Software Configuration Management) 服务端:单数据库 客户端 ...

最新文章

  1. [hadoop源码阅读][9]-mapreduce-概论
  2. js margin作用到父元素_CSS中margin-top对父级元素产生作用的问题
  3. docker删除镜像命令_第三章 Docker常用命令之镜像命令
  4. SDN中的Heavy-Hitter测量文献阅读
  5. 函数中的apply,call入门介绍
  6. Java描述设计模式(02):简单工厂模式
  7. java.lang.NoClassDefFoundError:
  8. CommonsChunkPlugin相关
  9. raster | R语言中的空间栅格对象及其基本处理方法(Ⅳ):数据聚合、重采样
  10. mysql管理数据 并上传至云端_西部数码网站管理助手创建、导入恢复、导出备份mysql数据库...
  11. PHP压缩CSS文件
  12. 微信接口_收货地址共享
  13. Web网页——留言板功能
  14. 个人电子邮箱格式大全,邮箱的正确格式是什么?
  15. TAGE预测器 “A case for (partially) TAgged GEometric history length branch prediction”
  16. raid5加热备盘_Raid5、热备盘原理 | 与其焦虑
  17. JS时间处理插件MomentJS
  18. Android自定义view 滑动开关 支持左右滑动 适用于listview
  19. 智能手环方案开源(含源码,原理图,APP,通信协议等) ...
  20. Linux硬盘空间爆满后如何清理

热门文章

  1. 关于电的计算机公式,电功率计算公式大全
  2. 利用vlmcs客户端区分KMS服务器是KMS模拟器还是正版微软KMS服务器
  3. golang 使用 goquery 抓取 知乎周刊
  4. pdf如何转换成word文档格式
  5. 小米手机插上android找不到驱动,小米手机连接电脑不显示文件怎么办?
  6. 常见元件、封装及尺寸
  7. linux超级块编辑,在EXT4 linux系统上模拟丢失的超级块错误
  8. 公司年会抽奖的一个java实现
  9. GO及其LiteIDE踩坑
  10. cdrx4自动排版步骤_如何在CorelDRAW软件排版CDR怎么快速排版技巧?