Git
标签(空格分隔): 版本控制
Git介绍
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
Git与SVN的区别
GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征。
Git 与 SVN 区别点:
- GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。
- GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。
- GIT分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。
- GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。
- GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
安装Git并配置
安装
Linux
-
Debian or Ubuntu
$ sudo add-apt-repository ppa:git-core/ppa $ sudo apt-get update $ sudo apt-get install git
-
CentOS
$ sudo yum install git
macOS
在Git官网使用gui安装。
配置
初次使用Git时,需要Git进行配置
- 指定用户名和邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email "youremail@domain.com"
查看配置信息:$ git config --list
- 生成并部署SSH key公钥
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
输入之后,连续按回车键,不需要做任何更改,会生成SSH key,也就是一个id_rsa.pub文件,存放在系统默认路径下:
操作系统 | 路径 |
---|---|
Win | C/User/用户名/.ssh/id_rsa.pub |
maxOS | $ open ~/.ssh 打开.ssh文件夹 |
注意
.ssh 文件夹下同时有 id_rsa 和 id_rsa.pub 文件(注意在开启后缀名的情况下),id_rsa 是置于本地机器的密钥,用于匹配置于服务器端的密钥文件 id_rsa.pub,这样才能建立 SSH 连接。
使用文本编辑打开id_rsa.pub文件,得到SSH key公钥,然后将公钥添加到github/码云当中。
进入Github或码云个人主页,然后
github:Settings -> SSH and GPG keys -> New SSH key
码云:设置 -> SSH公钥
将之前得到的SSH key公钥复制过来,Title可以随便取。
配置时的问题
有一次我在Windows的电脑上生成公钥,输入ssh-keygen
后居然提示"Could not create directory ‘//.ssh’" 错误,这奇了怪了,折腾了半天,原来是本机没有了home的环境变量。
添加环境变量:HOME=C:Users你的用户名
本地代码提交到github/码云、更新本地代码
前置条件
- 完成安装Git并配置
- 在Github/码云上添加仓库,并复制项目地址。
开始提交、更新
$ mkdir test //创建一个test文件夹
$ cd test //进入这个test文件夹
$ git init //初始化git仓库
$ git remote add origin https://github.com/VitoYi/xxx //关联远程仓库
$ touch README //创建README文件
$ git add README //将README文件存到暂存区
$ git add . //将项目中的所有文件存到暂存区
$ git commit -m 'first commit' //将暂存区的文件提交到master分支,-m后面是注释
$ git push origin master //将本地的master分支代码推送到远程master分支
$ git push origin master -f //如上面出问题,可以试试这个,表示舍弃线上的文件,强制推送
$ git status //查看当前工作区的状态
$ git pull //将远程服务器的代码更新到本地
Git代码提交的过程分为四个工作区
通过git检出github/码云上的项目
然后进入想要检出的目录,使用命令:
$ git clone https://github.com/VitoYi/xxx.git
版本跳跃与撤销代码
$ git log //命令查看版本日志;
$ git reflog //命令查看所有操作日志;
$ git reset --hard xxx(版本号) //实现版本跳转;
$ git reset --hard HAED //跳转到当前版本(回到本次版本修改之前的状态,主要用于撤销代码)。