Git要点
前面的话
本文将总结Git要点
版本管理工具
【作用】
1、备份文件
2、记录历史
3、回到过去
4、对比差异
【分类】
1、手动版本控制(又叫人肉VCS)
2、LVCS 本地
3、CVCS 集中式(如SVN)
4、DVCS 分布式(如Git)
Git优缺点
【优点】
1、 快速、灵活。每个开发中本地都有全量仓库,提交到本地非常快
2、 离线工作,能避免单点故障。即便远端代码服务器崩溃,开发者也能继续工作,无需等待修复。一定程度也是一种安全备份
3、 任意两个开发者之间可以很容易的合并和解决冲突
【缺点】
1、 学习曲线稍微陡峭一些,要多花一点学习时间
2、 代码保密性差,不便于权限控制。一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息,权限控制需要另外一套系统来保证
三种状态
1、已提交(commited):该文件已经被安全地保存在本地数据库中了
2、已修改(modified):表示修改了某个文件,但还没有提交保存
3、已暂存(staged):把已修改的文件放在下次提交时要保存的清单中

基本操作
1、获取仓库
使用git init创建仓库或使用git clone获取远程仓库
2、创建开发分支
使用git checkout -b dev创建dev分支
3、开发程序,修改代码文件
4、跟踪文件并提交到本地仓库
使用git add .跟踪文件,使用git commit -m 'xxx'提交到本地仓库
5、远程操作
使用git remote add origin git://xxxxx 添加元素仓库,使用git push origin dev 将本地的dev分支推送到远程的dev分支
[注意1]git push origin dev是git push origin dev:dev的缩写,如果省略:dev,默认地,远程服务器使用和本地相同的分支
[注意2]远程库的默认名称为origin,当然也可以起名为其他名称
6、当前功能开发完毕后,到master分支处理
使用git checkout master切换到master分支后,使用git pull origin master,获取master分支上的更新。使用git log -p来查看更新。处理后,使用git merge dev将dev分支合并到master分支上,然后使用git push origin master将本地master分支推送到远程master分支上
注意事项
1、Unix的哲学是“没有消息就是好消息”,git也类似。当没有任何返回时,表示操作成功
2、 版本控制系统只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等。图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道
Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动
3、使用Windows的同学千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,会让你遇到很多不可思议的问题
4、git commit -am可以写成git commit -a -m,但不能写成git commit -m -a
5、切换分支之前,最好要保证工作区干净
6、rebase和merge的区别如下
merge会根据两个分支的共同祖先和两个分支的更新提交进行一个三方合并,并保存这两个分支
rebase并没有进行合并操作,只是提取了当前分支的修改,将其复制在了目标分支的最新提交后面,并删除了当前分支
rebase可以产生一个更为整洁的提交历史,但若使用rebase操作,一定要确保没有其他人会使用被删除的分支
7、 回退版本
有时候可能会遇到git提交错误的情况,比如提交了敏感的信息或者提交了错误的版本。这个时候想将提交到代码库的记录删除
首先要找到提交点的hash,通过git log命令可以获取提交的历史找到需要回滚到的提交点

由图中得到,要返回添加测试文件的前一个版本,即更新项目说明的版本,hash值是d5ba961
接着,使用git reset --hard commit_hash命令,返回该版本

再使用git push origin head --force即可

Git要点的更多相关文章
- git学习——Git 基础要点【转】
转自:http://blog.csdn.net/zeroboundary/article/details/10549555 简单地说,Git 究竟是怎样的一个系统呢?请注意,接下来的内容非常重要,若是 ...
- Git:基础要点
直接快照,而非比较差异. 近乎所有操作都可本地执行. 在Git 中的绝大多数操作都只需要访问本地文件和资源,不用连网.但如果用CVCS 的话,差不多所有操作都需要连接网络.因为Git 在本地磁盘上就保 ...
- Git 在团队中的最佳实践--如何正确使用Git Flow
我们已经从SVN 切换到Git很多年了,现在几乎所有的项目都在使用Github管理, 本篇文章讲一下为什么使用Git, 以及如何在团队中正确使用. Git的优点 Git的优点很多,但是这里只列出我认为 ...
- Git 进阶指南(git ssh keys / reset / rebase / alias / tag / submodule )
在掌握了基础的 Git 使用 之后,可能会遇到一些常见的问题.以下是猫哥筛选总结的部分常见问题,分享给各位朋友,掌握了这些问题的中的要点之后,git 进阶也就完成了,它包含以下部分: 如何修改 ori ...
- 版本控制工具Git的学习笔记
在网上看到一个很不错的Git教程,学习后果断要做一下总结. 教程地址:http://www.liaoxuefeng.com/ 总结要点: 安装Git因为我个人的开发主要是基于windows环境下,所以 ...
- linux下git以及github的连接与使用
简单理解 Git 的思想和基本的工作原理,能够更好的进一步和使用Git.在开始学习Git 的时候,最好不要把Git的各种概念和其他的版本控制系统诸如 Subversion 等相比,否则容易混淆每个操作 ...
- [.net 面向对象程序设计进阶] (27) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git
[.net 面向对象程序设计进阶] (26) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git 本篇导读: 接上两篇,继续Git之旅 分布式版本控制系统 ...
- [.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit
[.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit 读前必备: 接上篇: 分布式版本控制系统Git——使用GitS ...
- [.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境
[.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境 本篇导读: 前面介绍了两款代码管理工具 ...
随机推荐
- [BZOJ 3709] Bohater
Description 在一款电脑游戏中,你需要打败n只怪物(从1到n编号).为了打败第i只怪物,你需要消耗d[i]点生命值,但怪物死后会掉落血药,使你恢复a[i]点生命值.任何时候你的生命值都不能降 ...
- Git Submodule管理项目子模块
使用场景 当项目越来越庞大之后,不可避免的要拆分成多个子模块,我们希望各个子模块有独立的版本管理,并且由专门的人去维护,这时候我们就要用到git的submodule功能. 常用命令 git clone ...
- 【vue】css解决“防抖动”——防止页面加载图片抖动
overflow:hidden;height:0;padding-bottom:*; // 其中*处填 图片的高宽百分比=高/宽*100%
- 简单使用redis实现sso单点登录
前面几篇分享了nosql只mongodb,今天简单分享另一个nosql神兵redis. 主要模仿sso单点登录,将登录人信息写入redis.话不多说,直接上马,驾. /// <summary&g ...
- 一次掌握 React 与 React Native 两个框架
此系列文章将整合我的 React 视频教程与 React Native 书籍中的精华部分,给大家介绍 React 与 React Native 结合学习的方法. 1. 软件开发语言与框架的学习本质 我 ...
- 无线网络中信噪比(SNR)计算
信噪比(S/N)=log[信号功率密度/噪声功率密度] a =log[信号功率密度]-log[噪声功率密度] 例如,接收端的信号功率密度为-63dBm,噪声的信号功率密度为-95dBm,则: 信噪比( ...
- 牛客练习赛35 C.函数的魔法
链接 [https://ac.nowcoder.com/acm/contest/32] 题意 题目描述 一位客人来到了此花亭,给了女服务员柚一个数学问题:我们有两个函数,F(X)函数可以让X变成(XX ...
- duxing201606的原味鸡树
链接 [http://murphyc.fun/problem/4011] 题意 描述 众所周知,duxing哥非常喜欢原味鸡.众所周知,原味鸡是长在原味鸡树上的. duxing哥因为是水产巨子,所以就 ...
- servlet程序HTTP Status 500 - Error instantiating servlet class 解决
在eclipase 中编译 servlet 但是一致报 HTTP Status 500 - Error instantiating servlet class XXX类 的问题 , 解决方法 1. ...
- Mysql数据库中的日期相关操作
1.获取当前时间的日期 select now();----------------------------------如:2008-12-29 16:25:46 select curdate();-- ...