一、Git简介
1、什么是Git?
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目。
Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源代码的版本控制软件。
Git与常用的版本控制工具CVS、Subversion等不同,它采用了分布式版本库的方式,不用服务器端软件支持。
2、Git的特点
Git是目前世界上最先进的分布式版本控制系统,在处理各种项目时,都十分高效,而且非常的高大上。
集中式与分布式的区别
除了git还有svn、cvs这样的版本控制系统,它们的区别在于一个是分布式一个是集中式
3、集中式就是svn和csv这样的版本控制系统,分布式是git
区别在于集中式的版本控制系统每次在写代码时都需要从服务器中拉取一份下来,并且如果服务器丢失了,那么所有的就都丢失了,你本机客户端仅保存当前的版本信息,换句话说,集中式就是把代码放在一个服务器上集中管理,你的所有回滚等操作都需要服务器的支持。
分布式的区别在于,每个人的电脑都是服务器,当你从主仓库拉取一份代码下来后,你的电脑就是服务器,无需担心主仓库被删或者找不到的情况,你可以自由在本地回滚,提交,当你想把自己的代码提交到主仓库时,只需要合并推送到主仓库就可以了,同时你可以把自己的代码新建一份仓库分享给其它人。
像集中式它们都有一个主版本号,所有的版本迭代都以这个版本号为主,而分布式因为每个客户端都是服务器,git没有固定的版本号,但是有一个由哈希算法算出的id,用来回滚用的,同时也有一个master仓库,这个仓库是一切分支仓库的主仓库,我们可以推送提交到master并合并到主仓库上,主仓库的版本号会迭代一次,我们客户端上的git版本号无论迭代多少次,都跟master无关,只有合并时,master才会迭代一次。
4、Git下载安装
在使用Git前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。
本篇我们只介绍在Windows下安装Git,Git 各平台安装包下载地址为:http://git-scm.com/downloads
下载好,按默认安装即可(推荐安转在D盘中)。安装完成后,在开始菜单里找到“Git”->“Git Bash”,双击蹦出一个类似命令行窗口的东西,
输入git --version显示版本(也可以在cmdDOS窗口中测试),就说明Git安装成功!
5、Git配置
完成后在命令行输入:
- 配置git环境
config:参数是用来配置git环境的
–global:长命令表示配置整个git环境
初次使用git需要设置你的用户名以及邮箱,这将作为当前机器git的标识,如果你用它来下载远程仓库一些需要登录权限的仓库会要求登录,git默认使用配置邮箱以及用户名登入,但会要求你手动输入密码
用户名配置
// user代表用户,.name代表配置用户的名称
git config --global user.name "你的用户名"
邮箱配置
user代表用户,.email代表配置用户的邮箱
git config --global user.email "你的邮箱"
查看配置信息:
要检查已有的配置信息,可以使用 git config --list 命令:
$ git config --list
也可以单独查看某项配置:
$ git config user.name
$ git config user.email
6、Git 工作区、暂存区和版本库
- Workspace工作区: 就是你电脑里能看到目录;
- Index / Stage暂存区: 一般放在.git(可隐藏文件)目录下的index文件(.git/index)中,所以我们把暂存区有时候也叫做索引(index);
- 版本库: 工作区有一个隐藏目录,.git,这个实际上是Git的本地版本仓库。
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
7、gitee开发文档
https://help.gitee.com/repository/ssh-key/generate-and-add-ssh-public-key
二、Git基本命令操作
1、Git基本命令操作
$ mkdir learngit #创建
$ cd learngit #切换
$ pwd #显示当前盘符路径 /d/gitspace/learngit
git init 版本库初始化
git add 添加至暂存区
git commit 提交
git status 显示本地仓库状态
git checkout 撤回
git reflog 查看历史记录
git reset --hard 版本穿梭
git push 推送至远程版本库
git clone 克隆版本库
git pull 拉回远程版本库的提交
git merge 分支合并
git rebase 分支变基
git log 显示提交日志
git rm 撤回添加
2、创建本地空仓库:git init
首先我们选择一个合适的位置,创建一个空目录
然后通过git init命令把这个目录变成Git可以管理的仓库:
git init
这个目录是Git用来跟踪管理版本仓库的,千万不要乱修改和删除这个目录中任意文件,否则这个git仓库就被你破坏了。
如果你看不到这个.git文件,使用命令ls -ah就可以看到隐藏的文件了。
3、把文件添加到版本库
-
把文件添加到版本库
版本控制系统可以记录你每次的改动 -
创建一个文件readme.txt
-
将文件提交到本地git版本仓库中
查看当前状态:
$ git status #查看当前git状态(新建了一个文件)
- 第一步添加到暂存区:
$ git add readme.txt #添加到暂存区
再查看状态:
- 从暂存区删除
git rm --cached readme.txt
- 第二步提交到本地版本仓库
$ git commit -m "wrote a readme file" readme.txt
git commit -m "记录提交内容"命令,-m 后面写的是本次提交的记录内容,也可以不写。
然后再再次查看状态(没有可提交的文件)
4、版本回退
查看历史记录,使用git log命令
- 回滚到指定历史版本
git reset --hard 要回滚id
- 回滚当前仓库指向的版本
HEAD是指向当前仓库的,历史版本中可能有别的分支,我们只想迭代我们仓库的上一个版本,这个很简单,我们只需要用HEAD来指向就可以了
git reset --hard HEAD^
- 查看版本信息
git reflog命令查看每个版本的commit id,直接git reset --hard commit_id即可。
5、Git的管理与修改
- 对readme.txt文件做修改,添加两行新内容:
- 然后将readme.txt添加到暂存区git add $ git add readme.txt
- 这个时候我们先不提交readme.txt,而是再做一次修改,将最后一行内容稍作修改
- 这个时候我们不再添加到暂存区了,而是直接git commit提交到本地版本仓库 $ git commit -m “git tracks changes”
- 会发现上述我们明明提交了,然后文件仍然是处于修改的状态,原因就是因为我们第二次做的修改没有添加到暂存区中,git commit命令没有追踪到待提交的第二次修改内容
查询修改的区别 - 这个时候我们使用一个新命令git diff HEAD – readme.txt(注意中间的空格),来对比我们此时工作区和git本地版本仓库中的readme.txt文件的区别:
接着git add,然后git commit在,这样就提交了;
6、版本穿梭
回到之前的版本 git reset --hard id
7、分支操作
分支操作
- 创建分支:git branch 分支名
- 查看分支 git branch -v
- 切换分支git checkout 分支名
- 合并分支 git merge 分支名
- 删除分支 git branch -d 分支名
- 查看分支
git branch -v
* master cdc4028 first commit
- 创建分支
git branch testing
git branch -v
* master cdc4028 first commit
testing cdc4028 first commit
- 切换分支
git checkout testing
Switched to branch 'testing'
M a.txt
git branch -v
master cdc4028 first commit
* testing cdc4028 first commit
- 合并分支
git merge com master # com是新建分支 master主分支
Updating 6ac5213..a8c3466
Fast-forward
hello.txt | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
- 删除分支
$ git branch -D testing
Deleted branch testing (was cdc4028)
$ git branch -v
* master cdc4028 first commit