GIT的使用详解

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/passwd

  • rm (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

    1. –hard 工作区会变、历史(HEAD)会变, 暂存区也变
    2. –soft 只会变历史(HEAD)
    3. –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命令,通过一个共享服务器,完成分布式的版本管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值