首先推荐下廖雪峰的官方网站,对Git的使用很详细,本笔记就是根据该网站教程学习整理的:
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
1、分布式版本管理系统,VS SVN
2、Linux下查看git
git –version
3、安装git
sudoapt-get install git
4、创建版本仓库
1)创建目录
$mkdir learngit
$cd learngit
$pwd
/Users/michael/learngit
2)初始化
$git init
3)基本操作
$git add<file>
$git commit
4、查看代码状态和代码变化
$git status
$git diff
5、提交时候会出现这样一个小问题:
warming:lf willbe replaced by crlf…
这是由于Linux下和Windows下的换行不一致而产生的警告,Linux下只有换行,而Windows底下包括了回车,具体解决见博客:
http://michael-roshen.iteye.com/blog/1328142
6、查看提交日志:
$git log
使用相关参数使得日志输出变得简短一些:
$git log –pretty=oneline
这里出现的一大段前缀数字就是版本号,和SVN不同的是,这里的版本号是通过SHA计算出来的,这样才能避免在分布式版本控制中冲突。
7、版本回退(git的版本回退速度非常快,因为Git在内部有一个指向当前版本的HEAD指针,当回退版本时候,就是将HEAD指向回退的那个版本而已,所以Git总有后悔药可以吃…)
写法一:
$git log --hard HEAD 当前版本
$ git log --hardHEAD^ 上一个版本
$ git log --hardHEAD^^ 上两个版本
写法二:
$ git log --hardHEAD~100 前100个版本
写法三:
$ git log –hard e4195e… 回退到某个版本号的版本(可以不写全,git会自己搜索)
8、查看回退log
$ git reflog
9、工作区和暂存区的概念
我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,而gitcommit就是往master分支上提交修改内容,可以这么理解:需要提交修改的文件放在了暂存区,然后一次性提交暂存区所有修改。
Changenot staged for mommit 修改了
Untrackedfiles 还未添加过的
Changedto be committed 修改了并放入暂存区了(就差commit)
10、管理修改
$git diff HEAD – readme.txt 查看该文件的修改情况
git管理的是修改而不是文件,所以如果还没add时修改的内容在commit的时候不会被提交,只有再次被add时才会加入到修改暂存区。
11、放弃工作区修改
$git checkout – readme.txt 让这个文件回到最近一次gitcommit或git add时的状态
12、删除文件(可以直接恢复)
$git rm <file>
13、连接远程库和push远程库:
1)生成公钥
2)到远程仓库(github上)添加公钥
3)创建远程仓库:
$ git remote add origin git@github.com:kangaroo007/learngit.git
4)push代码到远程仓库:
$git push –u origin master
5)如果报错可以先:
$git remote rm origin
14、分支管理的意义(引用)
“分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。”