git命令–https://www.runoob.com/git/git-workspace-index-repo.html
Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比。
git clone、git push、git add 、git commit、git checkout、git pull
一共包含四个区:工作区、暂存区、本地仓库、远程仓库.
基础命令
git init 在当前目录新建一个git代码库
git clone 下载一个项目和它整个代码历史
git branch 查看本地所有分支
git branch [分支名] 创建分支
git chekout [分支名称] 切换分支
git status (查看问价能改变记录)
使用 git add 命令将内容写入暂存区。
git commit -m ‘添加修改信息’
git commit -a -m ‘提交信息’:我们知道-m参数是输入提交信息的,-a 参数就是可以把还没有执行add命令的修改一起提交。
-a 参数设置修改文件后不需要执行 git add 命令,直接来提交
git commit 命令将暂存区内容添加到本地仓库中。提交暂存区到本地仓库中
git push的一般形式为 git push <远程主机名> <本地分支名> <远程分支名> ,例如 git push origin master:refs/for/master ,即是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名,第一个master是本地分支名,第二个master是远程分支名。
git push origin master == git push origin master:master 将本地的 master 分支推送到 origin 主机的 master 分支。
如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数:
git push --force origin master
git add 添加文件到仓库
git status 查看仓库当前的状态,显示有变更的文件。
git diff 比较文件的不同,即暂存区和工作区的差异。
git commit 提交暂存区到本地仓库。
git reset 回退版本。
git rm 删除工作区文件。
git mv 移动或重命名工作区文件。
命令 说明
git remote 远程仓库操作
git fetch 从远程获取代码库
git pull 下载远程代码并合并
git push 上传远程代码并合并
Git提交流程
1、到达要提交的目录下,可以先把网站git clone下来一个空的文件夹,然后把文件都mv进去,与gitlab保持一样的目录结构。
2、然后使用git add *,把文件放进缓存-中转—写入暂存区
3、接着git commit -m ‘add new code’
4、git push—输入密码,这里可以使用SSh保存密码,就不用反复输入。
git clone – git add * — git commit -m ‘add new code’ — git push
深化:
当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
当执行 git rm --cached 命令时,会直接从暂存区删除文件,工作区则不做出改变。
当执行 git checkout . 或者 git checkout – 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动
一般工作流程如下
克隆 Git 资源作为工作目录。
在克隆的资源上添加或修改文件。
如果其他人修改了,你可以更新资源。
在提交前查看修改。
提交修改。
在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
Git- 分支管理 -必杀技
使用分支将工作切分开来,从而让我们能够在不同开发环境中做事,并来回切换。
创建分支命令:
git branch (branchname)
切换分支命令:
git checkout (branchname)
当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。
合并分支命令:
git merge
Git pull 使用时,本地已经修改的情况
同事在使用git pull代码时,经常会碰到有冲突的情况,提示如下信息:
error: Your local changes to ‘c/environ.c’ would be overwritten by merge. Aborting.
Please, commit your changes or stash them before you can merge.
这个意思是说更新下来的内容和本地修改的内容有冲突,先提交你的改变或者先将本地修改暂时存储起来。
处理的方式非常简单,主要是使用git stash命令进行处理,分成以下几个步骤进行处理。
1、先将本地修改存储起来
$ git stash
这样本地的所有修改就都被暂时存储起来 。是用git stash list可以看到保存的信息:
git stash暂存修改
其中stash@{0}就是刚才保存的标记。
2、pull内容
暂存了本地修改之后,就可以pull了。
$ git pull
3、还原暂存的内容
$ git stash pop stash@{0}
系统提示如下类似的信息:
Auto-merging c/environ.c
CONFLICT (content): Merge conflict in c/environ.c
意思就是系统自动合并修改的内容,但是其中有冲突,需要解决其中的冲突。
4、解决文件中冲突的的部分
打开冲突的文件,会看到类似如下的内容:
git冲突内容
其中Updated upstream 和=====之间的内容就是pull下来的内容,====和stashed changes之间的内容就是本地修改的内容。碰到这种情况,git也不知道哪行内容是需要的,所以要自行确定需要的内容。
解决完成之后,就可以正常的提交了。
修改量小,直接回退到未提交的版本(可选择是否保存本地修改)
如果本地修改量小,例如只修改了一行,可以按照以下流程
-> reset(回退到未修改之前,选hard模式,把自己的更改取消) -> 重新pull -> 在最新代码上修改 -> [pull确认最新] -> commit&push
]
Linux
ctrl+c 中断目前程序
reboot 重启
head -n 20 file 打印前20行数据
grep [选项] [查找模式] [文件名1,文件名2.。。] 搜索文件内容
^ 以什么开头 ls -l | grep ^d 列出当前目录下所有子目录详细信息
$ 以什么结尾, ls -l | grep c$ 查找当下以c结尾的目录
作用是过滤出所需要的信息~~
最直接就是 grep “关键词” 文件
grep 选项 ‘word' filename
-c:打印符合要求的行数
-i:不区分大小写
-n:在输出符合要求的行的同时显示行号
-v:打印不符合要求的行
-A:后跟一个数字n,表示打印符合要求的行以及下面n行
-B:后跟一个数字n,表示打印符合要求的行以及上面n行
-C:后跟一个数字n,表示打印符合要求的行以及上下各n行
-r:会把目录下所有的文件全部遍历
--color:把匹配到的关键词用红色标示
例子:
过滤出带有某个关键词的行并输出行号
grep -n ‘root' 1.txt
过滤出不带有某个关键词的行并输出行号
grep -nv ‘root' 1.txt
过滤出所有包含数字的行
grep ‘[0-9]‘ 1.txt
过滤出所有不包含数字的行
grep -v ‘[0-9]‘ 1.txt
ssh, scp 远程登录linux主机, 远程拷贝
kill -9 19999 终止线程号为19999的线程 -9强制结束
top 动态显示当前耗资源最多的进程信息
df -h 以易读格式列出文件系统的整体磁盘使用量
vim命令
i 光标前插入
a光标后插入
x删除光标处的字符
dd删除光标所在的整行
:q 未修改文档时退出
:q! 强行退出,放弃修改
:wq 保存退出
:w 文档保存