Git版本控制工具诞生于2005年,由linux之父Linus所开发的,这个也是市场上比较主流的版本管理。在Git之前Linux都是采用手工的方式来维护代码,因为他比较反感SVN需要连接网络才能进行工作。而Git与Svn最大的区别在于,Git是分布式、Svn是集中式。
集中式:有一台中心服务器,需要连接网络才能进行更新上传的操作。
分布式:只需要拥有一个自己的版本库,无需连接网络都能进行工作,提高了工作效率。
一、配置git
- 设置git
git config --global user.email "xxx@gmail.com"
git config --global user.name "xxx"
使用git config --list 查看配置是否成功
- 创建仓库并初始化
mkdir prejectName //创建项目目录名
cd prejectName //切换到项目目录中
git init // 初始化目录,使其成为可用的本地仓库
- 创建忽略清单
touch .gitignore // 其内容一行,表示一个忽略规则
二、工作区常用指令
git status -s //输出简要变更日志
备注:
? 没有添加到版本库中(即不会记录改动操作)
A 已添加到本地代码仓库中
D 被删除
M 被修改
I 被忽略(忽略清单中添加)
git add hello.cpp //将hello.cpp文件添加到本地版本(暂存区)
git add . //将当前中所有未托管的文件 全部添加到本地版本库(暂存区)
git commit -m "版本提交说明"
git log //查看日志
git log --pretty=oneline //查看简要日志
git diff filename //对比当前版本和存储版本库中最新版本进行对比
git reset --hard HEAD^ // 回退到上一版本(删除工作空间改动代码,撤销commit,撤销git add)
git reset --soft HEAD^ // 回退到上一版本(不删除工作空间改动代码,撤销commit,不撤销git add)
git reset --hard xxxxxx // 对应版本的hash值的前6位
备注: HEAD 指向当前版本
git reflog //查看git历史操作
git checkout --file //撤销编辑的文件(1、没有git add 回到修改前的状态;2、已经添加到暂存区,回到添加到暂存区后的转态)
- 删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制
git rm --cached file_path
git commit -m 'delete remote somefile'
git push
- 删除暂存区或分支上的文件, 同时工作区也不需要这个文件
git rm file_path
git commit -m 'delete somefile'
git push
三、连接远程仓库使用
- ssh配置与Git产生联系:
mkdir ~/.ssh //创建.ssh目录
cd ~/.ssh //切换目录
ssh-keygen -t rsa -C "xxx@gmail.com" //生成KEY
settings >> SSH AND GPG Keys >> New SSH Key >>
ssh git@github.com //检测是否配置成功
- 创建代码管理仓库
git remote add origin https://github.com/qiuhe/firsttest.git
// 注 qiuhe: GIthub账号名 firsttest:项目名称 远程仓库名:origin
git remote -v // 查看远程仓库
git remote rm origin // 删除远程仓库
git push origin maste //推送本地仓库内容到远程仓库
git pull origin master //获取远程仓库到本地仓库
git clone https://github.com/qiuhe/firsttest.git //克隆仓库内容
git branch // 查看分支
git checkout -b test //创建test分支,并切换到test分支
git checout master //切换分支
git checkout master // 将现在所处分支合并到master分支
git checkout -b test /origin test //抓取分支