一、Git和SVN的区别

  • Git是分布式版本控制系统而SVN都是集中式的版本控制系统

集中化版本控制:都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。缺点是中央服务器的单点故障。 如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。 如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。

  • 分布式版本控制:客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

二、介绍Git的三区和三状态

  • 工作区:工作区是对项目的某个版本独立提取出来的内容。
  • 暂存区:是一个文件,保存了下次将提交的文件列表信息。
  • 仓库区:Git 用来保存项目的元数据和对象数据库的地方。
  • 修改状态:如果自上次取出后,作了修改但还没有放到暂存区域。
  • 暂存状态:如果作了修改并已放入暂存区域。
  • 提交状态:如果 Git 目录中保存着的特定版本文件。

三、Git常用命令

  • 1、安装: 打开git官网http://git-scm.com/下载。
  • 2、设置用户信息:
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
git config –-list  可以查看git信息
复制代码
  • 3、获取 Git 仓库

第一种是在现有项目或目录下导入所有文件到 Git 中。

第二种是从一个服务器克隆一个现有的 Git 仓库。

首先的生成密匙:

ssh-keygen -t rsa -C "your_email@youremail.com" 生成私密,在.ssh下找到id_rsa.pub.把里面的密匙加到gitlab中,不然是不能提交代码的。

使用git init 对现有项目管理。会在目录下生成.git版本文件。或者克隆现有的仓库:git clone 你需要克隆的git项目地址 (有两种协议http、ssh)。

  • 4、克隆后会发现默认分支是master分支。
  • 5、创建新分支并切换到该分支:git checkout –b 分支名
  • 6、切换分支:git checkout 分支名
  • 7、检查当前文件状态:git status
  • 8、查看远程分支:git branch –r
  • 9、删除远程分支:git push origin --delete 分支名 或 git push origin :分支名
  • 10、把本地分支推到远程:git push --set-upstream origin 分支名
  • 11、删除本地分支: git branch -d 分支名
  • 12、删除远程仓库:git remote rm origin (比如我从GitHub下colne后,需要提交到我们自己的版本仓库时)
  • 13、添加到远程:git remote add origin https://你的远程git地址。 git push -u origin master //提交到远程版本库 u 是--set-upstream 的简写
  • 14、添加文件到暂存区:git add .
  • 15、提交文件: git commit -m '添加内容'
  • 16、跳过暂存区提交文件:git commit –a –m '添加内容'
  • 17、移除文件不纳入版本:git rm 文件
  • 18、从暂存区移除文件:git rm -–cached 文件
  • 19、查看提交历史:git loggit log --oneline --before={3.weeks.ago} --after={2016-08-19}
  • 20、打标签:git tag –a v1.4 -m 'version 1.4' (-m 选项指定了一条将会存储在标签中的信息)
  • 21、打完标签推送到远程:git push origin v1.4
  • 22、检出莫个标签作为开发分支:git checkout -b 分支名 v1.4
  • 23、推送到远程仓库更新:git push
  • 24、从远程仓库拉取更新:git pull
  • 25、回滚到当前版本、上个版本,就像没提交过一样:git reset --hard HEAD git reset --hard HEAD^
  • 26、回滚的日志(后悔药):git reflog
  • 27、统计某人贡献的代码行数:git log --author="$(git config --get user.name)" --since=2016-01-01 --before=2016-12-31 --pretty=tformat: --numstat | awk '{adds += $1; subs += $2; all += $1 + $2} END {printf "added lines: %s removed lines : %s all lines: %s\n",adds,subs,all}'

Git的介绍和常用命令使用相关推荐

  1. 版本控制工具Git详细介绍和常用命令

    一.安装Git 在linux系统使用非常方便,只需要打开shell界面,并输入: sudo apt-get install git-core 按下回车后输入密码,即可完成Git的安装.但我们可能更多情 ...

  2. Git的基本概念/常用命令及实例

    Git的基本概念/常用命令及实例 什么是仓库 在 Git 的概念中,仓库,就是你存在.git目录的那个文件夹内的所有文件,包括隐藏的文件,Git程序会再当前目录以及上级目录查找是否存在.git文件,如 ...

  3. redis 介绍和常用命令

    redis 介绍和常用命令 redis简介 Redis 是一款开源的,基于 BSD 许可的,高级键值 (key-value) 缓存 (cache) 和存储 (store) 系统.由于 Redis 的键 ...

  4. git日常使用的常用命令总结

    git日常使用的常用命令总结 git 是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常 ...

  5. nvm介绍及常用命令

    nvm介绍及常用命令 1.为什么使用nvm? nvm是一个管理nodejs版本的工具.在实际的开发中,有些项目的开发依赖需要低版本的nodejs运行环境,此时我们就需要使用nvm来降低nodejs版本 ...

  6. 图解 Git 工作原理和常用命令使用教程

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 marklodato.github.io/visual-git-guide/in ...

  7. 收藏!工作中Git使用实践和常用命令流程合集

    来自:匠心Java 工作中git是一项必不可少的技能,在项目的开发进程中起着至关重要的作用 下面介绍一些git在工作中的一些使用实践.常用流程.常用命令,供大家参考! 一:前言 Git的定义是:分布式 ...

  8. 混沌测试工具chaosblade介绍及常用命令汇总

    目录 一.什么是混沌测试 二.环境搭建 三.测试指导文档 四.常用命令介绍 五.注意事项 一.什么是混沌测试 类似于"故障演练",通过构造各类异常,验证系统在碰到这些异常时是否有做 ...

  9. Git 详解及常用命令

    引言 学习内容:Git .GitHub .Gitee码云 .GitLab的使用 Git相关内容 Git介绍 分布式版本控制工具 VS 集中式版本控制工具 Git安装 Git命令 git的常用命令 Gi ...

  10. DOS介绍以及常用命令

    DOS介绍 来自百度百科: dos,是磁盘操作系统的缩写,是个人计算机上的一类操作系统.DOS是1979年由微软公司为IBM个人电脑开发的MS-DOS,它是一个单用户单任务的操作系统.DOS是Disk ...

最新文章

  1. 记linux与Windows之间实现文件实时同步的方案
  2. IBM Java多线程 - 3.无处不在的线程
  3. 发布程序后显示:未能创建类型
  4. HDFS建筑与shell操作
  5. Android Security视频学习合集
  6. [Python人工智能] 十五.无监督学习Autoencoder原理及聚类可视化案例详解
  7. k8s php mysql_在k8s上部署第一个php应用
  8. 如何运行 Angular library 的原理图 Schematics
  9. 解决:您需要来自xxx的权限才能对此文件夹进行更改(电脑系统取得管理员权限)
  10. redis 计数 java_redission计数器实现,redisTemplate计数器
  11. 零侵入性:一个注解,优雅的实现循环重试功能
  12. VS2010 MFC 使用GDI+给图片添加汉字
  13. Hive复杂数据类型 struct
  14. C++学习笔记——opencv2模块(图像处理)
  15. 基于Matpower的电力系统潮流计算仿真
  16. Java网络编程详解
  17. EINT DINT ERTM DRTM EALLOW EDIS ESTOP0的理解
  18. 阿里巴巴十周年有感----宗教的盛宴
  19. 【小峰の题单】网络流经典题目
  20. Codeforces965—A:Paper Airplanes(思维)

热门文章

  1. 疫情下的创业品牌如何逆风翻盘?
  2. 操作系统编写之引导扇区 1
  3. 4.7 ResNet CNN、tensorflow实现——python实战
  4. 有趣的算法(一):如何让有情人终成眷属
  5. python - color print
  6. numpy教程:随机数模块numpy.random
  7. 体重 年龄 性别 身高 预测鞋码_计算体重指数时,需要以下()数据。A.性别B.年龄C.身高D.体重...
  8. html css没有反应,只有CSS和HTML的标签没有正确响应
  9. 阻止滑动事件_重温DOM事件流,捕获、冒泡、useCapture、passive
  10. mysql查询每个表占用空间,【MySQL】查询所有数据库占用磁盘空间大小和单个库中所有表的大小...