15-Git使用

一、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初始化,用来记录资源信息及依赖。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容

  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 15,846评论 5 147
  • Git 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 3,897评论 0 11
  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,638评论 4 54
  • 今天儿子的英语课结束了。下午的展示课我没去,但是看到视频了,看到孩子学得如此棒,真的很感谢Venday老...
    star卫星阅读 94评论 0 0
  • 今天聊天的主题是关于RD的爱情。 这两天收到了来自RD的最近图片,是他和他的女友KT,两个人的脸上写满了幸福。这个...
    Moonlady520阅读 167评论 0 0