GIT 是一个分布式的管理工具,这里分享一下git的使用。
一.常用指令
1、bash命令格式
命令 [-options] [参数],如:tar zxvf demo.tar.gz
查看帮助:命令 –help
2、bash常见命令
pwd (Print Working Directory) 查看当前目录
cd (Change Directory) 切换目录,如 cd /etc
ls (List) 查看当前目录下内容,如 ls -al
mkdir (Make Directory) 创建目录,如 mkdir blog
touch 创建文件,如 touch index.html
cat 查看文件全部内容,如 cat index.html
more/less 查看文件,如more /etc/passwd、less
/etc/passwdrm (remove) 删除文件及文件夹,如 rm index.html、rm -rf blog
rmdir (Remove Directory) 删除文件夹,只能删除空文件夹,不常用
mv (move) 移动文件或重命名,如 mv index.html ./demo/index.html
cp (copy) 复制文件,cp index.html ./demo/index.html
head 查看文件前几行,如 head -5 index.html
tail 查看文件后几行 –n –f,如 tail index.html、tail -f -n 5 index.html
tab 自动补全,连按两次会将所有匹配内容显示出来
history 查看操作历史
> 和 >> 重定向到某个文件中
如echo hello world! > README.md,>覆盖 >>追加
二.SSH协议
SSH是一种网络协议,用于计算机之间的加密登录,
使的传递的数据更安全。SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的是OpenSSH,它是自由软件,应用非常广泛。
两种加密方式
对称性加密 一把钥匙
非对称性加密 公钥,私钥
第一次公钥从服务器传到本地加密,私钥解密
ssh命令
要访问Ip通过user> ssh user@ip
三.版本控制
版本控制(Version Control Systems)是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。这个系统可以自动帮我们备份文件的每一次更改,并且可以非常方便的恢复到任意的备份(版本)状态。
大致分为本地版本控制系统、集中式版本控制系统、分布式版本控制系统,本地版本控制系统,无法实现多人开发,基本很少人用。集中式的代表是SVN,分布式的代表是GIT
- 集中式版本控制系统
即所有版本都集中在一个中心服务器上,通过单一的集中管理的服务器,保存所有文件的修订版本,协同工作的开发者都通过客户端连到这台服务器,取出最新的文件或者提交更新。
缺点是对服务器,网络依赖严重,如果服务器或网络出现故障,版本数据将有可能丢失。
代表svn。
- 分布式版本控制系统
不需要中央服务器,每个协同开发者都拥有一个完整的版本库,这么一来,任何协同开发者用的服务器发生故障,事后都可以用其它协同开发者本地仓库恢复。由于版本库在本地计算机,也便不再受网络影响了,只需要一台共享服务器,将版本共享给其他人,代表git。
git的安装,我找到了一个教程,分享如下:
git的三种状态
1. 已修改 modified 工作目录
2. 已提交 committed git仓库
3. 已暂存 stage 暂存区
用git管理版本,工作流程(原理)
1.进入项目根目录
直接找到,右键git bush here
或直接右键git bush here
然后执行 cd dir
2.初始化git ,获得一个项目根目录。
命令:git init
如果要获得已有项目,则可以使用克隆
==git clone 仓库地址==
执行后生成.git目录,存储暂存区内容和提交内容。
3.提交到缓存区
命令:git add 文件/文件路径
4.提交
命令:git commit -m'标记'
将暂存区内容放到仓库永久存储(产生一个新的版本)
常用命令:
- 用户信息的配置(首要步骤,一台电脑,只需要配置一回)
配置完才能提交。
命令:
git config --global
user.name name
git config --global user.email email
–system 配置当前计算机上所有用户的所有仓库
- 查看配置信息
git config --list
- 查看提交历史
git log
查看版本、存盘点、历史
- git add 子指令
git add -A/*
//提交全部文件到暂存区
-* 查看仓库内所有文件状态*
git status 三种状态:
1.modified 被修改的。
2.暂存区绿色。
3.untarched 未追踪的文件。
- 撤销更改
git checkout 文件名
可以将暂存区的内容还原到工作区。
- 回到某个存盘点
利用git log 查看提交信息,commit 后的一串字符串为提交 id(自动生产的唯一标识)
git reset --hard
//提交id
四.git分支
在实际开发中,可能需要同时完成多项任务,当出现bug,但手里的工作又没完成这样我们当然想先保存正在做的,再解决bug的,所以出现了git分支来解决紧急的问题。
多任务问题,git采用了下面的分支结构来解决问题
-------------------------//任务一(分支一)
|
|-------------------//任务二(分支二)
1.master (分支)
只有至少提交一次(commit)之后才可以制作分支。
创建命令:
git branch cart(分支名称)
2.查看所在分支
git branch
//出现如下回应
*master
cart
//表示现在在master分支。
3.切换分支
git checkout 分支名
创建分支后,用基础命令开发即可
当创建分支后git会自动将当前开发进度存到仓库,当切换回原分支后,可以得到原开发进度。
这时两个分支是分开的,即两个分支的代码不一样,在修复了bug后,新分支无变化,而原分支也没有新分支的内容。
如下
<!--cart分支-->
<h1>master</h1>
<h1>购物车</h1>
<!--master分支-->
<h1>master</h1>
<h1>购物车</h1>
<h1>修复</h1>
4.这时就需要用到分支合并,使得
//命令:
git merge 分支2
//合并当前分支和分支2.
合并时细节
1.当两个分支代码,两个分支对同一段代码都有修改时,就会出现冲突,会提示分支来区分,这时需要开发者协同确认。
2.提示书写备注信息,可以忽略。
5.删除分支
git branch -d 分支名
//需要切换出要删除的分支
gir branch -D 分支名
//强制删除
五.GIT操作远程仓库
- 创建存盘点(实现版本控制)
- 分支解决了多任务。
//共享仓库
| |
| |
电脑一 电脑二
1.上传命令
git push 远程仓库地址 master
//将master共享至远程仓库
2.下载
git clone 远程仓库地址 名
git pull 远程仓库地址 名
3.共享仓库
- 共享仓库必须是以.git结尾。
- ==仓库必须是一个裸仓库(没有工作目录)==
git init --bare 创建裸仓库
- git会自动忽略空仓库
- 借助一个公共服务器,制作共享仓库。
ssh 用户名@ip地址:工作目录pwd 登录到远程服务器
4.添加一个远程仓库别名
git remote add newname 远程仓库地址
以后git push/pull newname即可使用
六.Github的使用
1.创建仓库
添加名字即可,github自动带.git
2.将本地文件上传
因为已经有仓库了所以不用初始化,直接push
github仓库中提供
git push git@github.com:仓库地址
但是需要登录。
3.登陆到github
利用ssh公钥/私钥解决
创建公钥/私钥
ssh-keygen -t rsa
在 github 设置
setting->ssh add GPG keys
4.仓库的删除
仓库界面中的setting 拉到最下面,有删除。
七.git关键点
1.分支管理
- 不要有太多的树杈(子分支)
- 要有一个“稳定分支”,即master分支不要轻意被修改
- 要有一个开发分支(developer),保证master分支的稳定性
- 所有的功能分支(feature)从developer创建
- 所有功能开发完成后新建发布分支(release)
2.比较差异
- git difftool 比较的是工作区和暂存的差异
- git difftool “SHA”比较与特定提交的差异
- git difftool “SHA”“SHA”比较某两次提交的差异
- git difftool 分支名称 比较与某个分支的差异
3.回滚到想要的版本及分支
git reset
- –hard 工作区会变、历史(HEAD)会变, 暂存区也变
- –soft 只会变历史(HEAD)
- –mixed(默认是这个选项)历史(HEAD)会变、暂存区也变,工作区不变
git checkout
git checkout SHA – “某个文件”,代表只是从SHA这个版中取出特定的文件,
和git reset 是有区别的,reset 重写了历史,checkout 则没有。
4.仓库更新
- 在项目开发过程中,经常性的会遇到远程(共享)仓库和本地仓库不一致,我们可以通过git fetch 命令来更新本地仓库,使本地仓库和远程(共享)仓库保持一致。
命令
git fetch “远程主机”
或者
git fetch “远程主机” “分支名称”
- 利用git fetch 获取的更新会保存在本地仓库中,但是并没有体现到我们的工作目录中,需要我们再次利用git merge来将对应的分支合并(融合)到特定分支。如下
git pull origin 某个分支, 上操作相当于下面两步
git fetch
git merge origin/某个分支
- 查看全部分支
git branch -a 便可以查看所有(本地+远程仓库)分支了
- 删除分支
删除远程分支git push origin --delete 分支名称
删除远程分支git push origin :分支名称
gitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务,以后会对gitlab的使用进行记录
总结:
git是一个版本控制工具,使用的命令基本为linux命令,通过一个共享服务器,完成分布式的版本管理。