git使用教程
前言
工欲善其事,必先利其器。
作为一名程序员,版本控制工具是必做掌握的一个基本工具,最常用的版本控制工具有svn和git。相对于svn,git的分布式控制、分支特性、灵活性等特点,使得越来越多的项目管理采用git作为版本控制工具以提交开发效率。但git独特的命令及分布式控制的理念,导致其学习成本较svn要高。本文将带你走进git的世界,从入门到进阶,边学边练,轻松掌握工作中常用的命令及操作。
SVN是subversion的缩写,是一个开放源代码的集中式版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理
git是用于Linux内核开发的版本控制工具。与CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。git的速度很快,这对于诸如Linux内核这样的大项目来说自然很重要。git最为出色的是它的合并追踪(merge tracing)能力。
安装
安装之前可以查看一下git版本,看看电脑是否已经安装了git
git --version
-
windows安装地址
-
Debian/Ubuntu
sudo apt-get install git
-
Fedora
#Fedora 21版本以前 sudo yum install git #Fedora 22版本以后 sudo dnf install git
基础命令
-
查看配置
git config --system --list
-
查看global配置
git config --global --list
-
设置用户信息
git config --global user.name "Your Name" git config --global user.email "email@email.com"
上面两个全局变量值是必须设置的。其他大部分都很少用得上,若需要查看所有配置,可以输入命令
git help config
查看。
提交代码
创建版本库
#创建工作目录,可以在图像化界面新建文件夹
mkdir gitdemo
cd gitdemo
#把这个目录变成Git可以管理的仓库
git init
#Git仓库创建完成,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,该目录是存储的是git的配置文件,默认是隐藏的。
添加文件
#在工作区创建一个readme.txt的文件,内容如下
Git is a version control system.
Git is open source.
#将文件添加至暂存区
git add readme.txt
#将文件添加到版本库
git commit -m "新增readme文件"
#git commit命令后面的-m参数表示注释,良好的注释可以增加代码的可读性和可维护性。
#上面的命令是添加单个文件至暂存区,可以反复多次使用。如果需要将所有改动全部添加至暂存区,可以使用下面的命令
git add -A
信息查看
#看看当前工作区的状态
git status
#查看工作区修改内容
git diff
#diff 是difference的缩写,查看差异。
#查看暂存区待提交内容
git diff --cached
#查看提交记录
git log
#查看前n个提交记录
git log -n 1
#如果嫌上面显示的信息太多的话
git log –pretty=oneline
#查看指定版本间的提交记录
#git log (最老版本..最新版本]
git log 15c1e01..bf9fe41
#查看前n个提交记录的详细修改内容
git log -n 1 -p
#查看版本间的差异
git diff 15c1e01
#代码块追溯
git blame readme.txt
远程仓库
#######推送本地版本库##########
#创建SSH key
$ ssh-keygen -t rsa -C "youremail@example.com"
##会在一个文件夹里面生成一个私钥 id_rsa和一个公钥id_rsa.pub。
##.ssh如果不做特殊处理的话,一般是在C:UsersAdministrator目录下。
##如果看不到.ssh文件,可以使用ls -ah指令查看隐藏文件夹即可
#执行查看公钥的命令cat ~/.ssh/id_rsa.pub 。
##然后在github上添加ssh密钥
#推送本地版本库
git remote add origin https://github.com/****/gitdemo.git
git push -u origin master
#第一条命令,是将本地创建与远程服务器上创建的项目进行关联。添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的。
#第二条命令,是将本地仓库的所有版本推送到远程仓库中。由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
#推送成功后,刷新GitHub页面,发现远程库的内容与本地一模一样。
#从现在起,只要本地作了提交,就可以通过命令:
git push origin master
#######克隆远程版本库##########
#在本地选择合适的项目工作空间,使用git clone命令克隆项目
git clone https://github.com/xxxxx/gitproject.git
版本管理
#版本回退操作,可以使用如下2种命令
#一、如果要回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以此类推
git reset --hard HEAD^
#如果回退100个版本,可以写成 HEAD~100
git reset --hard HEAD~100
#二、退回版本号
git reset --hard 版本号
#可以通过如下命令即可获取到版本号
git reflog
#撤销修改,把文件在工作区做的修改全部撤销
git checkout --flie