美文网首页
15-Git使用

15-Git使用

作者: 海棠未雨 | 来源:发表于2018-05-30 10:53 被阅读13次

    一、shell和vi

    Shell俗称壳,用来区别于Kernel(核),是指“提供使用者使用界面”的软件(命令解析器)
    

    1、shell分类

    • 图形界面shell:通过提供友好的可视化界面,调用相应应用程序,如windows系列操作系统,Linux系统上的图形化应用程序GNOME、KDE等。
    • 命令行shell:通过键盘输入特定命令的方式,调用相应的应用程序,如windows系统的cmd.exe、Windows PowerShell,Linux系统的Bourne shell ( sh)、Bourne Again shell ( bash)等。

    2、bash和shell

    各个 shell 的功能都差不多, Linux 默认使用 bash。
    在window系统下使用bash,需要一个软件
    

    ==bash命令格式==
    命令 [-options] [参数]

    ==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 查看操作历史
    • '>' 和 >>重定向
    • curl 网络请求,如curl http://www.baidu.com
    • whoami 查看当前用户
    • | 管道符可以将多个命令连接使用,上一次(命令)的执行结果当成下一次(命令)的参数
    • grep 匹配内容,一般结合管道符使用

    3、vi编辑器

    如同Windows下的记事本,vi编辑器是Linux下的标配,通过它我们可以创建、编辑文件
    
    三种模式
    命令模式、插入模式、底行模式
    命令行模式--i/a-->输入模式
    命令行模式--shift+:-->尾函数模式
    
    vi编辑器的使用
    • 底行模式 : w保存,:w filenme另存为
    • 底行模式 : q退出
    • 底行模式 : wq保存并退出
    • 底行模式 : e! 撤销更改,返回到上一次保存的状态
    • 底行模式 : q! 不保存强制退出
    • 底行模式 : set nu 设置行号
    • 命令模式 :  ZZ(大写)保存并退出
    • 命令模式: u辙销操作,可多次使用
    • 命令模式:  dd删除当前行
    • 命令模式:  yy复制当前行
    • 命令模式:  p 粘贴内容
    • 命令模式:  ctrl+f向前翻页
    • 命令模式:  ctrl+b向后翻页
    • 命令模式:  i进入编辑模式,当前光标处插入
    • 命令模式:  a进入编辑模式,当前光标后插入
    • 命令模式:  A进入编辑模式,光标移动到行尾
    • 命令模式:  o进入编辑模式,当前行下面插入新行
    • 命令模式:  O进入编辑模式,当前行上面插入新行

    4、SSH

    SSH是一种网络协议,用于计算机之间的加密登录。
    如果要在Windows系统中使用SSH,会用到另一种软件PuTTY,我们后面用到的Git客户也集成了SSH
    格式:ssh user@host
    user 代表真实存在的用户 host代表要登录的远程计算机
    
    加密技术
    常见有两种加密技术,分别是对称性加密和非对称性加密
    SSH属于后者
    非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥分别是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
    
    工作原理
    公钥和私钥是成对出现,可以通过ssh-keygen -t rsa来创建
    
    免密登录
    • ssh-keygen -t rsa会创建公钥和密钥(默认在用户目录/.ssh目录下)
    • ssh-copy-id user@host添加到对应远程主机的用户目录/.ssh目录下
    • 也可以登录远程主机,进入到用户目录/.ssh目录下手动创建authorized_keys文件,并将自已的公钥粘入该文件。

    二、版本控制VCS

    版本控制(Version Control Systems)
    是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统
    本地版本控制系统、集中式版本控制系统、分布式版本控制系统
    
    本地版本控制
    借助软件我们可以记录下文件的每一次修改
    功能比较单一,比如很难实现多人协同开发,
    
    集中式VCS
    通过单一的集中管理的服务器,保存所有文件的修订版本,协同工作的开发者都通过客户端连到这台服务器,取出最新的文件或者提交更新。其代表为SVN   
    
    分布式VCS
    分布式版本控制系统,则不需要中央服务器,每个协同开发者都拥有一个完整的版本库,任何协同开发者用的服务器发生故障,事后都可以用其它协同开发者本地仓库恢复。
    代表为git
    

    ==git没网也可以,svn需要网络==

    三、Git

    1、git工作原理

    git三种状态
    • 已提交(committed)
    • 已修改(modified)
    • 已暂存(staged)
    三个工作区域
    • Git 仓库(Repository)

    Git用来保存项目的元数据和对象数据库的地方

    • 工作目录(working Directory)

    对项目的某个版本独立提取出来的内容

    • 暂存区域(Staging Area)

    保存了下次将提交的文件列表信息,一般在Git仓库目录中

    Git工作流程
    • 在工作目录中修改文件
    • 暂存文件,将文件的快照放入暂存区域
    • 提交文件,找到暂存区域的文件,将快照永久性存储到Git仓库目录。

    2、Git本地仓库

    配置用户
    git config --global user.name "自已的名字"
    git config --global user.email "自已的邮箱地址"
    --global 配置当前用户所有仓库
    --system 配置当前计算机上所有用户的所有仓库
    

    注:配置用户只需要执行1次,可以重复使用。

    初始化仓库
    需要将现有项目初始化为一个仓库,或者将一个已有的使用git进行版本控制的仓库克隆到本地。
    
    • git init

    git init只是创建了一个名为.git的隐藏目录,这个目录就是存储我们历史版本的仓库,ls -al 可以查看。

    • git clone 仓库地址

    假如公司已有项目用了Git,那我们就利用克隆

    执行完这个命令,会在当前目录下生成一个Monment目录(默认和仓库名称相同),这个便是已有一个使用Git管理的项目。

    查看文件状态
    • git status可以检测当前仓库文件的状态
      ==注:git会忽略空的目录==

    ==所以仓库中的文件夹里要有东西==

    添加文件到暂存区
    • git add 文件名/ 文件路径 “*”或-A代表所有
    • 放到暂存区的文件被标记成了==绿色==,等待提交。(不同的工具不一样)
    撤销更改
    • git status可以再次查看仓库状态
    • 修改的文件会被标记==红色==。
    • git checkout 文件名可以 回到之前状态 ==从暂存区还原原到工作区==
    提交文件
    • git commit -m '备注信息'
    • 将暂存区被标记成绿色的文件,全部提交到本地仓库存储。
    查看提交历史
    • git log查看提交的历史
    • 按键盘q键退出
    恢复上次提交的状态
    • 通过SHA值可以回到之前某一次的提交
    • git reset --hard c888a614e072e2
    Git分支
    第1次提交时,Git会默认帮我们创建了一个master的分支,并且有指针(HEAD)指到了末端
    

    ==指针(HEAD)用来标明当前处于哪个分支的哪个版本==

    • 创建分支 git branch hotfix
    • 切换分支 git checkout hotfix
    • 删除分支 git branch -d hotfix

    3、Git远程仓库

    创建共享仓库
    • Git要求共享仓库是一个以.git结尾的目录
    • git init ==--bare== 初始化一个共享仓库,也叫裸仓库
    向共享仓库共享(同步)内容
    • 进入到yike目录
    • git push
    从共享仓库里取出内容
    • 新创建一个目录(模拟另一个开发者)
    • git clone ./repo.git demo
    通过demo仓库向repo.git共享内容

    4、获取员远程计算机权限

    生成密匙
    • ssh-keygen -t rsa 然后一路回车,这里会在当前用户生成了一个.ssh的文夹
    • 将id_rsa.pub公钥的内容复制
    • 打开gitHub的个人中心
    • 打到SSH keys
    • id_rsa.pub公钥粘贴即可

    5、Gitlab

    gitLab是免费的管理仓库的网站程序,我们可以把它架设到公司自已的服务器上,实现仓库私有化,这也是大部分公司通常采用的方法,其使用方法与gitHub十分相似。
    

    6、命令汇总

    • git config配置本地仓库
      • 常用git config --global user.name、git config --global user.email
    • git config --list查看配置详情
    • git init 初始一个仓库,添加--bare可以初始化一个共享(裸)仓库
    • git status 可以查看当前仓库的状态
    • git add“文件” 将工作区中的文件添加到暂存区中,其中file可是一个单独的文件,也可以是一个目录、“*”、-A
    • git commit -m '备注信息' 将暂存区的文件,提交到本地仓库
    • git log 可以查看本地仓库的提交历史
    • git branch查看分支
    • git branch“分支名称” 创建一个新的分支
    • git checkout“分支名称” 切换分支
    • git checkout -b deeveloper 新建并切换到developer分支
    • git merge“分支名称” 合并分支
    • git branch -d “分支名称” 删除分支
    • git clone “仓库地址”获取已有仓库的副本
    • git push origin “本地分支名称:远程分支名称”将本地分支推送至远程仓库,
    • 本地仓库分支名称和远程仓库分支名称一样的情况下可以简写成一个,即git push “仓库地址” “分支名称”,如果远程仓库没有对应分支,将会自动创建
    • git remote add “主机名称” “远程仓库地址”添加远程主机,即给远程主机起个别名,方便使用
    • git remote 可以查看已添加的远程主机
    • git remote show “主机名称”可以查看远程主机的信息

    四、bower

    基于NodeJS的一个静态资源管理工具,由twitter公司开发维,解决大型网站中静态资源的依赖问题。
    
    • 依赖NodeJS环境和git工具。
    • npm install -g bower安装bower(全局安装)
    • bower search 查找资源信息
    • bower install 安装(下载)资源,通过#号可以指定版本号
    • bower info 查看资源信息
    • bower uninstall 卸载(删除)资源
    • bower init初始化,用来记录资源信息及依赖。

    相关文章

      网友评论

          本文标题:15-Git使用

          本文链接:https://www.haomeiwen.com/subject/qgdtsftx.html