一.GIT和SVN的区别

SVN采用的是集中式版本控制,即多个客户端访问一个服务器。只有在服务器上有一个远程仓库。提交代码直接提交到远程仓库。且SVN是没有暂存区概念的。

GIT使用的是分布式版本控制的策略,远程和本地都有一个参仓库。提交代码先提交到本地仓库,在push到远程仓库。

二.GIT使用

1.GIT安装

Linux:sudo yum install git或sudo apt-get install git

Windows:http://git-scm.com/download/win,

2.GIT使用

1)创建远程仓库

安装完毕后,新建一个远端仓库文件夹mkdir git_remote

使用git init --bare初始化一个空仓库(即使有代码了也不会展示出来安全级别高。但git init 创建的仓库是可以看见代码的),创建完毕后这样

2)创建本地仓库并拉去远端代码

创建文件夹repo-a

使用git clone 用户名@ip:/path   将远端仓库拉到本地(SSH)

如果客户端无法输入密码,可以在客户端生成公钥和密钥ssh-keygen -t rsa(-t 指定加密算法)

生成文件如下:

.pub后缀就是公钥。将pub文件里的内容拷贝到远端ssh的order目录下,就可以实现不用密码进行访问远端。这就是非对称加密。

对称加密:客户端和服务器端公用同种加密方式(比如MD5)对同一掩码值进行加密,比对加密后的数据

非对称加密:将pub文件放到服务器,本地数据连同id_rsa(私钥)一起发送到远端,远端通过公钥进行解密

3)git配置信息

使用git  config --list查看配置信息

git config --global user.name “yourname”
git config --global user.email xxx@gmail.com

当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行
没有 --global 选项的命令来配置。

4)git的四个区域   

Workspace: 工作区,就是你平时存放项目代码的地方

Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息

Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本

Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

5)git工作流程

git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

1、在工作目录中添加、修改文件;

2、将需要进行版本管理的文件git add到暂存区域;

把文件从暂存区里移除?使用git rm -f 或者 git rm –cached或者git restores -S 

3、将暂存区域的文件commit到git仓库 .

如何把本地仓库文件退回到暂存区?

先使用git reflog 到查看当前历史版本

再使用git reset (--mixed) head~1 表示commit回退到上一个版本,对于刚提交的那个commit,则会回退到以下几种情况

git reset --mixed head~1(默认操作) 回退到编辑状态workspace
git reset --soft    head~1 回退到暂存区Index
git reset --hard  head~1 本地清空

4、本地的修改push到远程仓库,如果失败则执行第5步

5、git pull将远程仓库的修改拉取到本地,如果有冲突需要修改冲突。回到第三步

6)修改commit描述或者临时增加commit修改

git commit --amend 

7)git整理操作

可能为实现某个功能,需要不断提交多次commit. 可以使用git rebase对多次提交的commit进行顺序整理

比如我想对这二次commit进行整理

^:表示前一个版本 ~:表示后一个版本

使用git commit rebase -i 弹出对话框

  

:x 保存退出( :wq是保存最后时间  :x 如果没有修改,按照最原始时间保存)

然后把弹出对话框的注释cmmiit给删除。

如果是n个commit修改,则需要使用n+1此git rebase --continue

8)git分支结构

一般开发者是处在feature分支或者bug分支

主管处在master分支或者develop分支

使用git branch 创建分支,git checkout 切换分支(git checkou -b如果本地没有此分支则会创建该分支)

使用git push origin 将code推送到bug分支上(选择分支推送,不加origin默认是master),然后切换到master分支使用git merge将bug分支合并,继而使用git push origin master推送到远端

9)查看指定文件修改

git log --oneline filename   # 显示文件的所有修改记录

git log –p filename  # 显示所有commit的修改

git show commit-id filename   # 显示某个commit里文件的修改

git diff commit-id filename   # 显示与某个commit间所有的差异,commit-id可以替换成HEAD,比如HEAD~2

git diff commit-id1 commit-id2   # 显示两个commit所有的差异

10)处理临时事件stash

$ git stash   # 将工作区的修改保存到缓存区,默然取名为:

WIP on <branch_name> : <latest_commit_id> <latest_commit_message>

$ git stash save <name>   # 将工作区的修改保存到缓存区,且取名为name

$ git stash pop    # 取出缓存区栈顶(即最近一次)的内容,并且会删除此次pop的内容

$ git stash list   # 查看缓存里所有存储的修改

$ git stash apply stash@{X} #  取出stash里的内容,X为序号,但是不会删除stash@{X}

$ git stash drop stash@{X}  # 删除stash@{X}

$ git stash clear    # 删除缓存区里所有的记录

11)指定不需要git管理的文件

.gitignore可以提交到远程仓库中,这样这些规则就可以共享给所有的开发人员了,在.gitignore文件中每一行都定义了忽略 的规则

*.[oa]

*~

第一行就是表示忽略所有的以.o或者.a结尾的文件,

第二行表示忽略所有的以“~”结尾的文件。

12)标签

可以使用git tag去创建一些标签,标识版本的对应的代码。tag分两种,一种是轻量级的,一种是含注解的标签:

git tag v0.10.15

git tag v0.10.13 612931c0f

git tag –a v0.10.9     –m “bumped version to 0.10.9” 89de7802

git tag   # 列举所有的tag

git show v0.10.13   # 查看v0.10.13的内容

git push origin tag_name   # 推送tag到远程服务器

git push origin --tags   # 推送所有的tag到远程服务器

git checkout tag_name   # 检出tag的代码

 git tag –d tag_name    # 删除tag

git push origin :refs/tags/tag_name   # 删除远程tag

分布式版本控制--GIT相关推荐

  1. 删除隐藏版本信息 版本回退_Git系列之-分布式版本控制Git详解

    课程简介: 课程目标:通过本课程的学习,将全面掌握Git版本管理工具的配置与使用,以适应工作的需要. 适用人群:具有一定开发基础的开发人员. 课程概述:Git (读音为/gɪt/)是一个开源的分布式版 ...

  2. 集中式版本控制与分布式版本控制——Git 学习笔记01

    什么是版本控制 如果你用 Microsoft Word 写过东西,那你八成会有这样的经历: 想删除一段文字,又怕将来这段文字有用,怎么办呢?有一个办法,先把当前文件"另存为"一个文 ...

  3. 分布式版本控制工具:git与Mercurial(zz)

    分布式版本控制工具:git与Mercurial [收藏此页] [打印] 作者:cyfdecyf  2007-12-26 内容导航: 第1页 [IT168 技术文档]    说到版本控制工具,很多人可能 ...

  4. Git分布式版本控制遇到的问题如何把本地的项目上传到码市上

    一.Git分布式版本控制遇到的问题 错误: $ git push -u origin master fatal: unable to access 'https://git.coding.net/Su ...

  5. Git(分布式版本控制工具)

    [标注]:该笔记是转载自黑马Git教程,里面是包含自己做的笔记,黑马笔记开放共享,不存在侵权的问题,文章最后给出了资料的网盘链接 Git的学习是不依赖我们前面学习的知识,就算没有学习java也可以学习 ...

  6. Git分布式版本控制工具【IDEA版】【安装和使用以及上传代码到Gitee】(一篇文章精通系列)

    一.目标 了解Git基本概念 能够概述git工作流程 能够使用Git常用命令 熟悉Git代码托管服务 能够使用idea操作git 二.Git概述 1.开发中的实际场景 场景一:备份 小明负责的模块就要 ...

  7. 【尚硅谷Java笔记+踩坑】Git(分布式版本控制工具)

    用于复习快速回顾 目录 1.Git 1.0.提交项目到GitHub简洁版 1.2.版本控制 1.3.版本控制工具 1.4.Git简史 1.5.Git工作机制 1.6.Git和代码托管中心 2.Git安 ...

  8. 运维之道 | Git分布式版本控制常用命令解析

    Git分布式版本控制常用命令解析 一.创建版本库 版本库(repository)也叫仓库,可以看做一个目录,这个目录里的所以文件都由Git进行管理,每个文件的修改.删除,Git都能跟踪 1.选择一个合 ...

  9. 运维之道 | Git分布式版本控制系统安装、配置

    Git分布式版本控制系统安装.配置 一.Git简介 Git是目前世界上最先进的分布式版本控制系统,在处理各种项目时都十分高效,而且非常的高大上. SVN是集中式版本控制系统,版本库是集中放在中央服务器 ...

最新文章

  1. 工作后,拉开你和同龄人差距的,不是出身,不是努力,而是……
  2. struct 模块 把一个类型,如数字,转成固定长度的bytes
  3. 01背包问题:回溯法和限界分支、递归和迭代方式
  4. Critical error detected c0000374
  5. 我对CTO的理解 CTO要有技术魅力[转载]
  6. 如何在论文中自动生成标准的参考文献格式
  7. ifconfig route 手动设置网卡route路由 示例
  8. 【FLink】四种图 以及 数据在 taskManager 之间的流转
  9. 学习前端开发,可提高Web开发效率的15类工具
  10. 那是飞扬的青春—小评《DOOM启示录》
  11. 开机自动运行记事本病毒的删除
  12. 使用电子签章确立电子劳动合同的法律效力
  13. 可以说是迄今为止最好用的右键菜单管理工具
  14. 赵伯平--警惕台湾的企业管理垃圾!
  15. python画箭头_Python中绘制箭头
  16. 关于谷歌邮箱注册收不到验证码——”此电话号码无法用于验证“的问题
  17. 5分钟教你掌握异常检测方法
  18. IPv6大航海,风帆指向强应用
  19. android 代码 drawable,Android Drawable完全解析(一):Drawable源码分析(中)
  20. 程序员这个职业已经不香了吗?从业10年程序员告诉你真实情况

热门文章

  1. java-List to Array
  2. edius软件中常用工程的设置 千万别搞错视频场
  3. 研发效能评估体系:技术组织内的一把利剑
  4. 聚焦核心业务,降本增效
  5. 2022.12.11 第十一次周报
  6. 基于Flutter开发网站转换成APP源代码 网站生成APP源代码带控制端
  7. 00002__C++矢量图形库
  8. 日本人是这样做游戏的!
  9. 火狐浏览器一败涂地?
  10. Windows10(64位)的操作系统安装Office(64位)提示无法安装