Git 分布式版本控制系统
目录
一、简介
Git 是分布式版本控制系统,与时下较为流行的svn版本控制系统最为显著的区别如下:
Git版本控制系统:
svn版本控制系统:
Git中的每台主机均可以作为一台独立的服务器来保存一个项目的所有文件,即使远程服务器宕机了,本地的任何一台主机均可以作为服务器使用
二、Git环境配置
下载Git的安装包,打开后一顿下一步就好了
-
安装好的标志:
- 在任何人位置单击鼠标右键可以看到有 Git Bash Here和 Git GUI Here证明已经安装成功
三、Git基本命令
命令 | 含义 |
---|---|
mkdir | XX (创建一个空目录 XX指目录名) |
pwd | 显示当前目录的路径 |
git init | 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。 |
git add XX | 把xx文件添加到暂存区去。 |
git commit –m “XX” | 提交文件 –m 后面的是注释。 |
git status | 查看仓库状态 |
git diff XX | 查看XX文件修改了那些内容 |
git log | 查看历史记录 |
git reset –hard HEAD^ 或者 git reset –hard HEAD~ | 回退到上一个版本 (如果想回退到100个版本,使用git reset –hard HEAD~100 ) |
cat XX | 查看XX文件内容 |
git reflog | 查看历史记录的版本号id |
git checkout – XX | 把XX文件在工作区的修改全部撤销。 |
git rm XX | 删除XX文件 |
git remote add origin https://xxx.git | 关联一个远程库 |
git push –u origin master (第一次要用-u 以后不需要) | 把当前master分支推送到远程库 |
git clone https://xxx.git | 从远程库中克隆 |
git checkout –b dev | 创建dev分支 并切换到dev分支上 |
git branch | 查看当前所有的分支 |
git checkout master | 切换回master分支 |
git merge dev | 在当前的分支上合并dev分支 |
git branch –d dev | 删除dev分支 |
git branch name | 创建分支 |
git stash | 把当前的工作隐藏起来 等以后恢复现场后继续工作 |
git stash list | 查看所有被隐藏的文件列表 |
git stash apply | 恢复被隐藏的文件,但是内容不删除 |
git stash drop | 删除文件 |
git stash pop | 恢复文件的同时 也删除文件 |
git remote | 查看远程库的信息 |
git remote –v | 查看远程库的详细信息 |
git push origin master | Git会把master分支推送到远程库对应的远程分支上 |
四、命令详解
4.1 配置账号
git config --global user.name "yourname"
git config --global user.email "email"
这里的--global
参数含义为全局的,在这台电脑上的所有 Git 仓库均使用该配置。(当然也可以单独设置)
4.2 创建本地仓库
仓库(关键字repository
)用于跟踪文件的修改状态
在 Git Bash 中操作 Git :
mkdir 创建一个文件夹(该文件夹模拟为项目目录)
cd 进入目标文件夹
pwd 显示当前目录
cat test.txt 查看文件内容
命令:
git init
直接为该文件夹(工程)创建 Git 仓库,此时文件夹中便多了一个名为.git
的文件夹(Linux中以.
开头的文件为隐藏文件)
4.3 创建文件test.txt
在目标文件夹中新建记事本文件test.txt,使用命令:
git add test.txt
将该文件添加到暂存区
,使用命令:
git commit -m "修改了text.txt文件"
将暂存区中的修改提交到本地仓库(.git文件夹
)管理,其中-m
参数的作用是添加注释,其后面的字符串为注释。使用命令:
git status
查看当前状态。该命令将显示出两种颜色来区分当前文件状态:
Git 中文件有三类存放位置:
暂存区、本地仓库、远程(GitHub或GitLab)仓库
未添加到Git | 暂存区 | 本地仓库 | 远程(GitHub或GitLab)仓库 | |
---|---|---|---|---|
状态 | 文件修改后 | git add 命令执行后 | git commit 命令执行后 | push 命令执行后 |
status命令显示颜色 | 红色 | 绿色 | N/A | N/A |
4.4 查看文件修改内容
如果文件被修改过未 add 到暂存区,此时的改变可以被以下命令捕捉到:
git diff test.txt
显示如下:
*红色的-部分为缺少的,绿色的+部分为新增的内容
4.5 查看历史记录
git log
可选参数:-pretty = oneline 使查询到的log每一行显示一条
4.6 版本回退
git rteset --hard HEAD^
回退两个版本:
git rteset --hard HEAD^^
回退100个版本:
git rteset --hard HEAD~100
回退到指定版本:
git rteset --hard 版本号
查看版本号:
git reflog
每次 commit
为一个版本
五、工作区与暂存区
工作区:当前目录
暂存区:版本库(.git文件夹
)中的stage ,自动创建的 master 分支,指向 master 分支的首指针HEAD
5.1 丢弃未添加到暂存区的内容
git checkout test.txt
-
该命令有两种情况:
- 1.当文件内容已经放到暂存区后,又发生了修改,执行此命令将丢弃修改
- 2.未放到暂存区的修改将会直接丢弃
5.2 删除文件
rm test.txt
相当于放到了回收站
,想继续删除的话就执行
git commit
如果想还原文件就执行
git checkout -- test.txt
六、远程仓库与Git分支
6.1 远程仓库配置
-
远程仓库分为两种:
- 1. GitHub仓库
- 2. GitLab仓库
区别:GitHub仓库为开源的,GitLab仓库是闭源的,企业常用
本地仓库和远程仓库的连接使用SSH加密,使用需先配置SSH服务
1.创建SSH key,先看C盘用户目录下有无.ssh
目录,如果没有则:
ssh-keygen -t rsa -C "email"
2.登陆GitHub,Settings -> SSH keys -> Add SSH key -> 粘贴.ssh
目录下的公钥内容
6.2 本地仓库和远程仓库建立连接
git remote add origin https://xxx.git
此处的origin为远程仓库的别名,可随意起。网址为远程仓库的url
同步本地代码到远程仓库:
git push -u origin master:master
-u
为关联的意思,第一次push时使用。冒号前是本地分支名,冒号后为远程分支名
6.3 创建分支
git checkout -b dev
创建一个名为dev的分支,并切换到该分支。此命令相当于以下两个命令:
git branch dev
git checkout dev
查看分支命令:
git branch
6.4 合并某分支到当前分支
git merge name
如果在合并的过程中产生了冲突,Git会标记冲突,手动将冲突代码解决后再commit
6.5 删除分支
git branch -d dev
*参数-d
为删除
6.6 分支管理策略
在合并分支时Git默认的分支管理策略是FastForward,该模式下的分支被删除后将不会保留任何该分支的信息。使用以下命令禁用FastForward模式。
git merge -no-ff -m "注释内容" dev
6.7 查看分支
查看远程分支
git branch -r
查看所有分支:
git branch -a
6.8 将分支推到GitHub
git push origin dev
6.9 删除GitHub上的分支
git push origin : dev
:
为删除之意
6.10 推送分支
git push origin master
6.11 建立分支连接
git branch --set-upstream dev origin/dev
6.12 抓取
git pull https://xxx.git
如果有冲突,需解决冲突后再执行 add、commit、push
七、工作现场
在实际应用时,会出现当前的分支上的任务还未完成,不能add到暂存区,此时却出现了bug,需要到bug分支上解决问题
保存当前工作现场(栈):
git stash
恢复现场:
git stash list 查看保存的现场
git stash pop 恢复并删除现场
相当于以下两个命令:
git stash apply 恢复现场
git stash drop 删除现场