Git使用详解
1.git是什么?
Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。
那么Git之父是谁呢?
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
1.1 git功能
从一般开发者的角度来看,git有以下功能:
1:从服务器上克隆数据库(包括代码和版本信息)到单机上。
2:在自己的机器上创建分支,修改代码。
3:在单机上自己创建的分支上提交代码。
4:在单机上合并分支。
5:新建一个分支,把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
6:生成补丁(patch),把补丁发送给主开发者。
7:看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
8:一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
1.2 git特点
1.直接快照,而非比较差异
git和其他版本控制系统的主要差别在于,git只关心数据的整体是否发生变化,而大多数其他系统只关心文件内容的具体差异。这类系统(CVS,Subversion,Perforce,Bazaar等待)每此记录有哪些文件进行了更新,以及都更新了哪些行的什么内容。
git并不保存这些前后变化的差异数据。实际上,git更像睡觉哦把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一次快照,然后保存一个指向这次快照的索引。为提高性能,若没有文件变化,git不会再次保存,而只对上次保存的快照作一连接。
2.近乎所有操作都可以本地执行
在git中的绝大多数操作都只需要访问本地文件和资源,不用联网。因为git在本地磁盘上就保存着所有有关当前目录的历史更新,所以处理起来速度飞快。
3.时刻保持数据完整性
git建立在整体框架的最底层,当文件传输变得不完整,或者磁盘损坏导致文件数据缺失时,git都会察觉。
4.三种状态
staged(已暂存):表示把已经修改的文件放入下次提交时要保存的清单中。
modified(已修改):表示修改了整个文件,但是还没有提交保存。
committed(已提交):表示该文件已经安全地保存在本地数据库中了。
1.3 在linux上安装git
如果要在linux上安装预编译好的git二进制包,可以直接用系统提供地包管理工具。在fedora上用yum安装:
#yum install git-core
在ubuntu这类debian体系地系统上,可以用apt-get安装
#apt-get instal git-core
2.git的使用操作命令
基本操作
1.初始化仓库
。git init
2.配置用户信息
。git config --global user.name "username"
。git config --global user.email tom@qq.com
3.查看配置信息
。git config --list
4.获取帮助
。git help verb
比如要学习config命令可以怎么用,运行
。git help config
5.添加文件到暂存区
。git add filename
。git add *(添加所以文件到暂存区)
。git add --all (添加所以文件到暂存区)
6.移除文件
。git rm filename
7.重命名一个文件
。git mv oldfilename newfilename
8.提交到暂存区
。git commit -m "message" 只会提交暂存区(staged)里面的内容
9.查看工作目录状态
。git status
10.查看提交历史记录
。git log
11.查看文件的改变
。git diff
撤销操作
1.撤销加入到暂存区的操作
。git reset HEAD file
2.撤销修改的操作
。git checkout -- file
3.将本地的修改放进回收站
。git stash
4.从回收站中回复本地的修改
。git stash apply
tag 操作
1.查看tag
。git tag
2.创建tag
。git tag -a v1.0 -m "my version 1.0"
3.显示tag信息
。git show v1.0
4.对之前的提交打tag
。git tag -a v0.1 -m "version 0.1"
分支操作
1.查看分支
。git branch
2.创建分支
git branch branchname
3.删除分支
git branch -d branchname
4.切换分支
。git checkout branchname
5.创建并切换分支
。git checkout -b branchname
远端仓库操作
1.克隆一个远端仓库
。git clone url
2.添加远端仓库
。git remote add name url
3.更新远端仓库的分支和数据
。git fetch name
4.获取并合并远端仓库的分支到当前分支
。git pull reponame branchname
5.上传本地分支和数据到远端仓库
git push reponame branchname
6.跟踪远端分支上的分支
。git checkout --track origin/testbrancj
。git checkout -b test origin/testbranch