whats the GIT?
GIT 是一款免费开源的分布式版本控制系统, 用于敏捷高效地处理任何或小或大的项目
Git 的功能特性:
从一般开发者的角度来看, git 有以下功能:
1 从服务器上克隆完整的 Git 仓库 (包括代码和版本信息) 到单机上
2 在自己的机器上根据不同的开发目的, 创建分支, 修改代码
3 在单机上自己创建的分支上提交代码
4 在单机上合并分支
5 把服务器上最新版的代码 fetch 下来, 然后跟自己的主分支合并
6 生成补丁(patch), 把补丁发送给主开发者
7 看主开发者的反馈, 如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突), 就会要求他们先解决冲突, 然后再由其中一个人提交如果主开发者可以自己解决, 或者没有冲突, 就通过
8 一般开发者之间解决冲突的方法, 开发者之间可以使用 pull 命令解决冲突, 解决完冲突之后再向主开发者提交补丁
从主开发者的角度 (假设主开发者不用开发代码) 看, git 有以下功能:
1 查看邮件或者通过其它方式查看一般开发者的提交状态
2 打上补丁, 解决冲突(可以自己解决, 也可以要求开发者之间解决以后再重新提交, 如果是开源项目, 还要决定哪些补丁有用, 哪些不用)
3 向公共服务器提交结果, 然后通知所有开发人员
优点:
适合分布式开发, 强调个体
公共服务器压力和数据量都不会太大
速度快灵活
任意两个开发者之间可以很容易的解决冲突
离线工作
缺点:
资料少(起码中文资料很少)
学习周期相对而言比较长
不符合常规思维
代码保密性差, 一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息
Git 与 SVN 区别点:
1GIT 是分布式的, SVN 不是: 这是 GIT 和其它非分布式的版本控制系统, 例如 SVN,CVS 等, 最核心的区别
2GIT 把内容按元数据方式存储, 而 SVN 是按文件: 所有的资源控制系统都是把文件的元信息隐藏在一个类似. svn,.cvs 等的文件夹里
3GIT 分支和 SVN 的分支不同: 分支在 SVN 中一点不特别, 就是版本库中的另外的一个目录
4GIT 没有一个全局的版本号, 而 SVN 有: 目前为止这是跟 SVN 相比 GIT 缺少的最大的一个特征
5GIT 的内容完整性要优于 SVN:GIT 的内容存储使用的是 SHA-1 哈希算法这能确保代码内容的完整性, 确保在遇到磁盘故障和网络问题时降低对版本库的破坏
GIT 基本命令
GIT 配置
- $git config --global user.name "自定制名字"
- $git config --global user.email "自定制邮箱"
- $git init # 会生成一个 git 文件, 用来追踪管理版本库
GIT 工作中用的命令
- # 提交代码
- $git add .# . 表示所有, 也可以是指定文件的名字, 将文件添加到暂存区
- $git commit -m "描述信息" # 将文件从暂存区添加到当前分支(描述信息一定要好好写)
- # 查看日志(可用于版本回退)
- $git log # 查看从最远到最近的提交日志
- $git log --pretty = online # 简化日志
$git reset--hard 日志中的字符串 # 版本回退到指定版本状态
- $git reflog # 记录每一次命令
- # 查看状态及某个地方(通常用于处理 bug)
- $git status # 查看状态
- $git stash # 将当前工作区的代码暂存到某个地方中, 通常这是我们要去处理紧急任务如解 bug
- $git stash pop # 从某个地方中取回原先的代码
- $git stash list # 查看某个地方的所有存储记录
$git stash apply 编号 # 取出指定编号至工作区
$git stash drop 编号 # 删除指定编号
- $git stash clear # 清空某个地方
- # 分支命令
$git branch 分支名 # 创建分支
$git branch # 查看当前所在分支
$git checkout 分支名 # 切换到指定分支
$git branch -d 分支名 # 删除指定分支
$git checkout -b 分支名 # 创建并切换到该分支
$git merge 分支名 # 将分支名中的代码与当前区域的代码合并
- # 代码下拉及上传(master 为分支名)
- $git pull origin master # 将代码拉下来进行工作
- $git push origin master # 工作完毕将代码上传至 GIT
- # 新电脑第一次使用时
$git clone add origin 目标库地址 # 克隆目标库
- $git init # 会生成一个 Git 文件, 用来跟踪管理版本库
- $git remote add origin XXX # 创建远程仓库, XXX 为你的 Git 仓库地址
- $git pull origin master # 将代码拉下来进行工作
- $git push origin master # 工作完毕将代码上传至 GIT
其他
- $git log --graph --pretty = online --abbrev--commit # 查看当前分支合并情况
- $git remote -v # 查看远程仓库信息
- # 打标签
- $git tag #查看标签
$git tag 标签名 # 打标签
$git tag 标签名 id # 给指定 id 打标签
$git tag -a 标签名 -m"描述信息" id # 给指定 id 打上加描述信息的标签
# 自定制
$git config --global alias. 别名 真名 #给命令配置别名, 更方便操作
$git config --global alias.last "log-1" #取别名, 之后就可以用 $git last 来查看最后一次提交的信息
来源: http://www.bubuko.com/infodetail-2510116.html