OS-Lab0
一.GIT 的常规操作
常规操作也是我自己平时常用的几个命令, 学自于 pro git 这本书中
一.git 基本使用
clone现有仓库
1
git clone URL (URL支持git,ssh,http,https等各种协议)
git中文件的各个状态
- unstaged - git仓库中没有此文件的相关记录
- modified - git仓库中有这个文件的记录,并且此文件当前有改动
- staged - 追加,删除或修改的文件被暂时保存,这些追加,删除和修改并没有提交到git仓库
- commited - 追加或修改的文件被提交到本地git仓库(git仓库中大部分都是这种文件,所以git status不显示这些文件)
查看git仓库中各文件状态
1
git status
初始化一个仓库
1
git init
在当前文件夹下生成.git目录,完成初始化,此时此文件夹下的所有文件处于unstaged状态
追加文件
1
git add test.c
test.c的文件变为staged状态,其他文件还是unstaged状态
5.1 追加文件的结果1 - 恢复为原先状态(变为unstaged)
1
git rm --cache test.c
5.2 追加文件的结果2 - 提交到git仓库(变为commited)
1
git commit -m "my message"
修改文件
1
echo "aaa" >> test.c
test.c的状态变为modified
6.1 修改文件的结果1
1
git add test.c (暂时保存修改的内容,即变为staged)
下面有2条路可以选择:
6.1.1 取消刚才的暂时保存1
git reset test.c (状态变回modified)
6.2.2 将暂存的修改提交到git仓库
1
git commit -m "my message"
6.2 修改文件的结果2
1
git checkout test.c (将test.c恢复为git仓库中的最新版本,即变为commited状态,test.c的内容和5.2节一样)
删除文件
7.1 从git仓库和磁盘上删除文件1
git rm test.c (当前目录中删除了test.c,在git仓库中暂时删除了test.c,相当于staged状态)
7.1.1 从git仓库中删除test.c
1
git commit -m "my message" (git仓库以后不再维护test.c)
7.1.2 删错了,恢复刚才的操作
1
git reset HEAD test.c (恢复到删除前的状态,当前目录中已删除的test.c也恢复了,test.c仍文commited状态)
7.2 仅从git仓库中删除文件
1
git rm --cache test.c (当前目录中没有删除了test.c,仅在git仓库中暂时删除了test.c,相当于staged状态)
7.2.1 从git仓库中删除test.c
1
git commit -m "my message" (git仓库以后不再维护test.c,但是当前目录中仍然有test.c)
7.2.2 删错了,恢复刚才的操作
1
git reset HEAD test.c (和7.1.2一样)
7.3 误删除后的恢复
如果删除了一个文件,并且commit之后发现删错了。也可以恢复,1
2
3git log (查看各次的提交信息)
git checkout commit号 (恢复到未删除前的commint号,此时删除的文件也恢复到磁盘上了)
git checkout master (备份好删除的文件后,再回到最新状态)
二.git 远程仓库
查看远程仓库
1.1 简单查看-所有仓库1
git remote (只能查看远程仓库的名字)
1.2 查看更多内容-所有仓库
1
git remote -v (远程仓库的名字及git地址)
1.3 查看单个仓库的信息
1
git remote show [remote-name]
新建远程仓库
1
2git remote add [shortname] [url]
ex. git remote add mc git://www.host.com/gitdir/mycode.git修改远程仓库
1
git remote rename [oldnanme] [newname]
删除远程仓库
1
git remote rm [remote-name]
远程仓库的数据
5.1 获取数据1
2git fetch [remote-name] (获取仓库的所有更新,但是不自动合并当前分支)
git pull (获取仓库的所有更新, 并且自动合并到当前分支)5.2 上传数据
1
2git push [remote-name] [branch-name]
ex. git push origin master
三.git 分支
查看和切换分支
1
2
3
4
5git branch (查看所有的分支及当前处于哪个分支)
git branch -v (查看所有的分支的详细信息)
git branch --merged (查看已经合并的分支)
git branch --no-merged (查看还没合并的分支)
git checkout [branch-name] (切换到某个分支)新建分支
1
2git branch [branch-name] (新建一个分支)
git branch -b [branch-name] (新建一个分支并切换到这个分支上)合并分支
1
2
3
4git merge [branch-name]
ex. 将分支btest合并到主分支master
git checkout master
git merge btestmerge时有冲突的文件会列出来,需要手动合并
将冲突手动解决后,再次用 git status来查看是否还有 unmerged的文件。
如果没有冲突的文件,就可以 git commit 来提交这次合并了。删除分支
1
2git branch -d [branch-name]
或者 git branch -D [branch-name] (强制删除某个还未合并的分支)远程分支相关
5.1 新建远程分支- git checkout [local_branch] (首先进入想要上传的分支)
- git remote add [remote_repo] [remote_branch]
(这里的[remote_branch]是远程分支的名字,一般和[local_branch]同名,
[remote_repo]是远程仓库的名字)
5.2 向远程分支推送数据
1
git push [remote_repo] [remote_branch]
5.3 删除远程分支
1
git push [remote_repo] :[remote_branch] (注意远程分支前有个":")
二.shell 变量的定义,赋值,运算
一、变量类型
1.1、自定义变量
1.定义变量
1 |
|
2.引用变量
1 |
|
3.查看变量值
1 |
|
4.取消变量
1 |
|
5.作⽤用范围
仅在当前shell中有效
1.2、系统环境变量
1 |
|
1.3、预定义变量
1 |
|
小脚本
1 |
|
执行如下
1 |
|
二、变量赋值
2.1、直接赋值
1 |
|
2.2、从键盘读入
1 |
|
小脚本
1 |
|
2.3、强引用与弱引用
1 |
|
2.4、命令执行结果引用
1 |
|
三、数学运算
3.1、整数运算(expr)
1 |
|
3.2、整数运算($(()))
1 |
|
3.3、整数运算($[])
1 |
|
3.4、整数运算(let)
1 |
|
3.5、小数运算
1 |
|
三.vim实用笔记
一、vim实用基础配置
配置出了可以通过命令实现外,也可以将set内容添加到vim配置文件/etc/vim/vimrc中,当然,添加到vimrc就不需要在set前面加”:”了。
1、设置显示行号可以使用命令 ”:set number”
2、文件自动保存,”:set autowrite”
3、实用配置列表:
因为这些配置实在太多,就不一一列举了,总结和摘录了一个常用的配置表,可以直接复制粘贴到vimrc配置文件中(“符号后面的都会被识别为注释):
syntax on “ 自动语法高亮,其实vim7.3版本语法默认是高亮的
colorscheme evening” 一种好看的配色方案
set shiftwidth=4 “ 设定 << 和 >> 命令移动时的宽度为 4个字符
set tabstop=4 “ 设定 tab 长度为 4个字符
filetype plugin indent on “ 开启插件
set ignorecase “ 搜索时忽略大小写
set incsearch “ 即刻显示当前输入的搜索结果
set hlsearch “ 高亮搜索结果
set noerrorbells “ 关闭错误信息响铃
set autochdir “ 自动切换当前目录为当前文件所在目录
filetype indent on “自动缩进
set autoindent shiftwidth=n “修正缩进,ctrl+T或ctrl+D或者>>、<<均对应n个字符缩进
二、vim查找功能
1、最基础的查找:
2、精确查找:
比如说我要确切地找到一个单词“top”。则按 / 键,然后输入如下内容:
/<top>
其实它的意思是,搜索以top开头,并以top结尾的单词。所以如果我们希望查找以top开头的所有单词:
/<top
以top结尾的单词:
/top>
3、跨文件查找字符:
比如,在进行某个文件的编辑时,我希望找到当前工作目录中所有含有”include”字符串的cpp文件:
“:grep include *.cpp”