一、Git的简介
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。这篇文章的目的是让大家学会用git命令来管理自己的项目,养成这种代码管理的习惯。
首先你要知道这几个概念:工作区、版本库.git(暂存区,objects,本地仓库)、远程仓库
- 工作区:你创建的一个文件夹。
- 暂存区:在.git 文件中,又叫索引,用来暂存和跟踪工作区的文件
- 本地仓库:在你自己电脑上的,对应你工作区的仓库,有很多间房
- 远程仓库:远端的仓库,平台(例如:国外的github,国内的gitee,阿里的codeup)当然你也可以自己搭建平台,毕竟git是开源的
这里举个例子:假如你在地方有个工厂,生产某一商品,工作区就是你的生产车间,版本库是工厂的仓库,暂存区是临时存放的区域,objects负责贴标签,本地仓库是工厂专门存放的区域,远程仓库就是工厂的全国仓库负责将货物面向世界。
![在这里插入图片描述](https://img-blog.csdnimg.cn/4737c68bd4064e0bbe647a67288eaf56.png)
这幅图实际表示的是一个拥有.git文件的文件夹,版本库是.git文件,其余是工作区的文件。index是暂存区,master是本地仓库的默认房间,也就是本地仓库的一个分支。
![在这里插入图片描述](https://img-blog.csdnimg.cn/7f68ec09dc2d42629ce53ee376b045b1.png)
workspace:工作区
staging area:暂存区/缓存区
local repository:本地仓库
remote repository:远程仓库
二、Git基本命令
1、基本操作
创建仓库命令
下表列出了 git 创建仓库的命令:
命令 | 说明 |
---|
git init | 初始化仓库 |
git clone | 拷贝一份远程仓库,也就是下载一个项目。 |
git clone -b (分支)(路径) | 把路径里的文件克隆到指定的分支 |
git clone --recursive(路径) | 克隆指定的子模块 |
提交与修改
Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。
下表列出了有关创建与提交你的项目的快照的命令:
命令 | 说明 |
---|
git add | 添加文件到暂存区 |
git status | 查看仓库当前的状态,显示有变更的文件。 |
git diff | 比较文件的不同,即暂存区和工作区的差异。 |
git fsck | 检查本地和远程仓库的一致性 |
git commit | 提交暂存区到本地仓库。 |
git reset | 回退版本。 |
git rm | 删除工作区文件。 |
git mv | 移动或重命名工作区文件。 |
git add . //将所有文件都推送到暂存区
提交日志
命令 | 说明 |
---|
git log | 查看历史提交记录 |
git blame <file> | 以列表形式查看指定文件的历史修改记录 |
git log --pretty=oneline //简洁显示提交日志
git log --oneline //简洁显示提交的日志
git log --reverse --oneline //逆向显示,从第一次提交开始显示
回退
远程操作
命令 | 说明 |
---|
git remote | 远程仓库操作 |
git fetch | 从远程获取代码库 |
git pull | 下载远程代码并合并 |
git push | 上传远程代码并合并 |
git remote -v 查看连接了那些远程仓库
git remote add <连接名> <远程仓库URL> 创建一个链接对接远程仓库
分支管理
为了方便管理
命令 | 说明 |
---|
git branch | 创建/列出分支,git init 会自动创建master分支 |
git merge | 合并分支 |
git branch -d <分支名> | 删除分支 |
git checkout -b <分支名> | 切换分支 |
git branch <分支名> // 在本地仓库创建一个分支
git branch -l //列出本地仓库的分支
git branch -a //列出本地仓库和远程仓库所有分支
git checkout -b (branchname) //创建分支并切换到该分支下
其他
命令 | 说明 |
---|
git config -l | 查看全部配置 |
git config --system --list | 查看系统配置 |
git config --global --list | 查看用户配置 |
git config --local --list | 查看本地配置 |
git submodule update --init --recursive | 更新子系统 |
git describe --tags --dirty | 查看当前版本 |
git --help | 查看所有指令 |
2、SSH设置
命令 | 说明 |
---|
git config --global user.name "用户名" ' | 用户名设置 |
git config --global user.email ”邮箱“ | 邮箱设置 |
ssh-keygen -t rsa -C "邮箱" | 生成ssh秘钥 |
ssh -T git@github.com | 测试是否对接成功这里是github |
3、代理配置
//http || https
git config --global http.proxy 127.0.0.1:10080
git config --global https.proxy 127.0.0.1:7890
//sock5代理
git config --global http.proxy socks5 127.0.0.1:7891
//注意:10080,7890是你自己代理的端口号,根据实际情况改
git config --global --get http.proxy
git config --global --get https.proxy
git config --global --unset http.proxy
git config --global --unset https.proxy
git config --global --unset-all http.proxy // --unset-all 删除所有代理