bash基本命令
命令 | 说明 |
---|---|
cd (change directory) | 更改当前所在的目录 |
pwd (print work directory) | 显示当前所在的目录 |
ls (list) | 展示当前或者指定目录中的所有内容信息 -a 显示所有内容,-l 详细信息列表 |
touch | 新建文件 |
mkdir | 新建文件夹 |
rm (remove) | 删除文件,加上-r 可以用来删除文件夹 |
rmdir | 删除空文件夹 |
cp (copy) | 复制文件或者 文件夹-r |
mv (move) | 移动文件或者 文件夹 |
cat | 查看文件内容 |
less | 分页查看文件内容 |
clear | 清空屏幕 ( command + k ) |
reset | 清空屏幕 |
open . | 打开当前命令所指的文件目录 |
echo | 输出内容到屏幕 |
> | 重定向指令 覆盖 |
>> | 重定向指令 追加 |
tab: 自动补全
上下方向键 命令历史
vi编辑器
如同Windows下的记事本,vi编辑器是Linux下的标配,通过它我们可以创建、编辑文件。它是一个随系统一起安装的文本编辑软件。
三种模式
- 普通模式 ---- 普通模式下无法进行内容编辑,每个按键都会对相应自己的命令
1. 删除功能
`dd` 删除光标所在的一整行
`dw` 删除光标所在的后面的一个单词
2. 撤销
`u` 撤销
3. 开一个新行
`o` 在光标所在的行下面开一个新行
`O` 在光标所在的行上面开一个新行
4. 复制
`yy` 复制光标所在的行 yank
`yw` 复制一个单词
5. 粘贴
`p` 粘贴 paste
6. 光标的移动指令
1. 方向键(不推荐使用)
2. h j k l
3. w e b
7. 重复命令
数字+命令
- 插入模式 ---- 我们可以像使用正常的编辑器一样,去编辑内容
- 命令模式 ---- 可以输入不同的命令,来实现不同的功能
模式切换
- 普通->插入
i
a
- 插入->普通
esc
ctrl+[
- 普通->命令
:
- 命令->普通
esc esc
或者删掉:
- 插入模式和命令模式不能直接切换,需要先切换到普通模式中!
保存
进入命令模式
-
:w
-- 保存 -
:q
-- 退出 -
:wq
-- 退出并保存 -
:q!
-- 修改之后,不想保存,就想退出
如果编辑器非正常退出,比如直接点击了窗口的关闭按钮,那么下次进入编辑器编辑刚才的文件的时候,会出现报错,解决方法就是,直接将,生成的.xxx.swp文件删除重新打开编辑器就可以了!!
版本控制工具
VCS Version control system
记录所有的修改历史,方便日后恢复到指定的修改的版本!!
版本控制工具还可很方便实现代码共享,以及合并!
分类
本地版本控制工具
集中式版本控制工具 (代表:SVM)
分布式的版本控制工具 (代表:Git)
本地式只适合单人开发
集中式和分布式都可以适用于多人协作开发,但是不同点在于:
集中式版本库是存放在服务器上,所有人开发都要从服务器获取源代码,并且修改之后需要提交给服务器!
分布式的版本库是存放在本地,当需要共享代码的时候,通过源代码共享服务器进行共享即可!!
git
git的基本使用
- 配置 (一台电脑只需要配置一次,可以修改,修改就是直接重复命令,会把原来的信息给覆盖掉)
git config --global user.name "yonghuming" (配置用户名)
git config --global user.email "用户邮箱" (配置用户邮箱)
- 初始化仓库
cd 当前项目文件夹
git init
git init 命令,实际就是在当前项目中创建了一个`.git`的隐藏文件夹,这个文件夹中就是用来保存所有的版本信息的内容
- 添加文件到暂存区
git add 文件名 (可以添加单个文件,也可以一次性添加多个文件)
git add *
git add .
git add -A
- 将文件从暂存区保存到版本库,生成新的版本
git commit -m "说明信息"
- 查看当前目录下问价的状态信息
git status
- 查看提交的版本历史记录
git log
- 将文件从暂存区恢复到工作目录
git checkout 文件名
- 将文件从版本库中指定的版本恢复到工作目录
git reset --hard 版本号
- 查看所有操作流水
git log --graph --oneline --decorate --all
- 查看某个log(版本)的修改提交记录
git show 版本号
- 克隆某个分支
git clone -b 分支名 远程地址 文件夹名
- 拉取远程代码到本地
git pull
git pull --rebase // 会使commit看起来很自然。https://www.cnblogs.com/wangiqngpei557/p/6056624.html
- 清除所有的提交历史记录
1.Checkout
git checkout --orphan latest_branch
2. Add all the files
git add -A
3. Commit the changes
git commit -am "commit message"
4. Delete the branch
git branch -D master
5.Rename the current branch to master
git branch -m master
6.Finally, force update your repository
git push -f origin master
- git rebase 合并commit
合并提交记录
1. git rebase -i <要合并到哪个版本号> 或 git rebase -i <开始版本号> <结束版本号>
2. 除了第一行记录 其余的改成 s 然后保存退出
3. 编辑commit 记录 然后保存退出
- git rebase merge分支 (让提交记录变得清晰 不会出现 执行 git merge 指令 而产生merge的commit 节点)
git checkout dev
git rebase master # 将dev分支和master分支做一次衍合处理
# git提示出现了代码冲突,此处为之前埋下的冲突点,处理完毕后
git add src/index.html # 添加冲突处理后的文件
git rebase --continue # 加上--continue参数让rebase继续处理
git checkout master
git merge dev
git的分区
- 工作目录 (指的是项目文件存放的位置)
- 暂存区 (用git add就会将文件添加到这个暂存区)
- 版本库 (存放版本历史信息的位置)
git add 是将工作目录中的文件内容添加到了暂存区
git commit 是将暂存区中的内容在版本库中生成一条新的版本记录
git checkout 是将暂存区中的内容获取出来放到了工作目录
git reset --hard 是将版本库中指定版本的内容获取出来放到工作目录
一句话总结: git 其实就是将文件在各个区之间进行流转!!
分支
oper | command |
---|---|
创建分支 | git branch 分支名 或 git checkout -b 分支名 |
切换分支 | git checkout 分支名 |
删除本地分支 | git branch -D 分支名称 |
合并分支 | 在A 分支 执行命令 git merge B (B 合并到了A ) |
查看所有分支 | git branch 或 git branch -a |
查看本地分支与远程的关联 | git branch -vv |
删除远程分支 | git push origin --delete |
创建并关联远程一个新分支 | git checkout 分支名, 成功后 用 git branch -vv 看一下关联 |
同步远程分支到本地 (远程可能删掉了某些分支,本地同步一下) | git pull --prune 或 git pull -p |
冲突问题
分支A中创建了文件xx.txt, 分支B中也创建了个xx.txt,那么git就会发现,有两个同名的文件,这时候,就是冲突产生了,冲突产生之后,合并会失败,需要先解决冲突,然后再次提交,才能正常的合并。
解决冲突
冲突产生之后,git会告知哪个文件冲突了,然后在文件中,会用 >>>> ==== <<< 这样的方式将冲突的内容标记出来,我们只需要将标记删除,然后将代码改成自己想要的结果,再次add commit即可!!
分支的使用原则
只要有新的任务,就开辟一个新的分支去做,做完之后,将分支合并回去就可以了!!
master分支
这个分支,是git默认自动创建的!!
创建的时机,并不是在git init
之后就会有,而是,在第一次提交完成之后,才会默认的创建出来这个分支!!
分支切换要注意的事项
必须先将所有的更改,做一次提交之后,再切换分支!!!
回滚操作/恢复操作
- 如果用
git reset --hard 版本号
从版本库里面恢复了某一个版本,那么以前的所有历史版本也就不存在了,回滚操作就是一粒后悔药,如果短时间后悔恢复此版本,而且还想恢复另外一个版本,就可以用这个方法
- 查看所有的操作日志
git log -g
- 创建新的分支,将要恢复到的版本号作为最后一个参数
git branch 分支名 版本号
- git pull时出现冲突 放弃本地修改,使远程库内容强制覆盖本地代码
git fetch --all //只是下载代码到本地,不进行合并操作
git reset --hard origin/master //把HEAD指向最新下载的版本
- git push 本地强制覆盖远程
git push ...... -f -f命令
远程仓库
git
git 是一个分布式的 版本控制工具,特点,就是版本库存放在本地!!!
远程仓库的作用
就是共享版本库!!! 共享代码!!!
远程仓库的创建
远程仓库其实就是一个裸仓库
裸仓库
创建裸仓库
git init --bare
裸仓库创建完成之后,就不需要做任何操作了,在裸仓库中不能进行任何的开发操作
远程仓库的操作命令
- 给远程仓库推送内容
git push 远程仓库地址 本地分支名称:远程分支名称
如果本地分支名称和远程分支名称相同,那么可以缩写如下:
git push xxx.xxx.git master:master
git push xxx.xxx.git master
- 获取远程仓库中 所有 的内容
git clone 远程仓库地址 文件夹名称
文件夹名称也可以不用写,默认使用的就是远程仓库的文件夹名称!!
克隆不需要密码验证 push需要 因为防止别人也能随便往你项目中推送东西
如果是克隆的远程仓库中的所有内容,那么意味着,项目中的所有分支中的内容都被clone下来了,但是在git bash命令行中使用git branch命令看不到所有分支的名字,但是分支确实已经存在了,这个时候如果想要看某一个分支里面的内容,我们需要看远程仓库中的分支名称,然后在bash命令中用git checkout "分支名",切换到了这个分支之后,再用git branch查看分支名称,就可以看到了
- 获取远程仓库中更新了的内容
git pull 远程仓库地址 分支名称
- 如果在本地删除了一个文件之后,想在远程仓库下载恢复此文件,下载之前,要重新add commit一下本地的项目文件。目的是让远程的仓库和本地的版本库中的数据做一下对比,有差别,才能用pull获得此文件。
注意
只有在远程仓库中从未推送过任何内容的时候,我们才能随意向里面推送任何内容
但是,一旦已经推送过一次内容了,那么之后就不能随便的向远程仓库推送内容了,能推送的,只能是和第一次推送相关的修改的内容!!
每次在向远程仓库中推送新内容的时候,必须先进行一次获取更新内容的操作(pull),否则可能推送失败!!!
远程仓库
远程仓库地址别名
因为远程仓库地址的连接过长,不容易记忆,所以每次在向服务器提交新内容的时候,都需要重新去查看一次远程仓库的地址,非常麻烦!!
我们可以为每个远程仓库地址,设置一个简单的别名
设置远程地址的别名
git remote add 别名 远程仓库地址
查看所有的远程地址别名
git remote
删除别名
git remote remove 别名
重命名别名
git remote rename 旧别名 新别名
查看别名对应的地址
git remote get-url 别名
设置别名对应的地址
git remote set-url 别名
origin别名
如果是直接通过 git init
创建的仓库,那么这个仓库中是不会有origin的别名的!!!
如果仓库是通过 git clone
从远程仓库中获取的内容,那么这个仓库中会自动添加一个 origin
的别名,指向的地址其实就是当时 clone
的远程仓库的地址
git安装问题 踩坑
git报错 fatal:open /dev/null or dup failed: No such file or directory
在其他win10电脑上复制了一个null.sys文件,替换C:\Windows\System32\drivers\null.sys
ssh
概念
用作客户端和服务器通信的时候的一个安全的协议,全称是 Secure Shell,一般用作服务器的远程管理
ssh工具
在linux系统下,提供了一个工具,ssh,这个工具可以通过ssh协议连接服务器并对服务器进行远程的管理
使用示例
ssh [email protected]
ssh协议的格式
用户名@服务器的地址
公钥以及私钥的生成
- 通过
ssh-keygen
命令就可以生成公钥和私钥
ssh-keygen -t rsa
敲完这个命令之后,一定要一路敲回车,知道看到冒泡泡为止!!!!
服务器免密登录的设置步骤
- 生成公钥以及私钥
- 在服务器的 ~/.ssh/autorized_keys中将生成公钥中的所有的内容追加到里面去
- 再次登录服务器就不需要密码了!!
github免密
github
提供了两种推送和获取代码的协议
- https -- 地址:https://github.com/liuxinya/firstP.git
- ssh -- 地址:[email protected]:liuxinya/firstP.git
免密设置步骤
如果从未生成过秘钥
需要执行ssh-keygen -t rsa
生成秘钥文件,输入此命令之后一路回车即可(在用户根目录下.ssh目录中,有个id_rsa.pub文件)打开github,点击个人头像,选择下面的settings
点击左边栏中的 SSH and GPG keys
点击页面右上方的New SSH Key
打开自己的公钥文件(用户根目录下.ssh目录中,有个id_rsa.pub文件)复制文件中的所有的内容
将复制好的内容粘贴到 key 文本框中
点击Add SSH key 按钮
以后在本机使用github的时候,直接使用ssh协议的连接,就可以实现免密功能了!!!
只有使用ssh协议的连接,才能够实现免密的push,pull
静态页面托管
github给每个账号提供了一个项目作为静态页面托管的机会!
我们可以将自己写好的静态页面全部放到github上去,通过指定的连接就能够访问到页面效果!!
步骤
创建新的项目
项目名称必须是 : 用户名.github.io
将自己的写好的项目直接推送到这个github仓库中
通过 用户名.github.io 地址 就可以直接访问页面了!!