git的一些使用方法

GIT的使用

安装步骤

msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
在这里插入图片描述
安装完成后,还需要最后一步设置,在命令行输入:

$ git config --global user.name "Your Name"$ git config --global user.email "email@example.com"

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。
注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

创建GIT仓库

1.创建存放git的文档目录(新建一个文件夹)mkdir mycode
2.进入这个文件夹的目录 cd mycode
3.在这个文件夹下执行git init 命令,创建一个仓库
4.告诉git ,我们要跟踪哪些文件的修改,默认git只能跟踪文本类的文件修改,不包括图片、视频等。Git add * or 具体的某个文件git add 文件名
5.把我们的文件正式提交到仓库中去 git commit -m 备注的信息,最好备注下

小结:

初始化一个Git仓库,使用git init命令。
添加文件到Git仓库,分两步:

第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit,完成。

查看状态

git status 查看我们跟踪文件的状态,时刻掌握我们的仓库状态

git diff 查看具体哪儿被修改了,新增的内容又是哪些

如果我们修改了我们的文件,那么我们就需要继续的add commit 提交最新的修改。
注意:git commit -a 合并了add commit 两个操作,只不过它只适用于旧文件的修改,新文件依然要添加add commit 这样

如果出现被锁的情况,只需要删除.git 下面的index.lock 文件即可 rm .git/index.lock 具体原因不明

Git commit -a 后会出现 vim编辑器,这个编辑器的简单使用掌握下就OK了

要随时掌握工作区的状态,使用git status命令。
如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

查看我们的记录log

我们不停的修改,提交,修改,提交!

在Git中,用HEAD表示当前版本,也就是最新的提交3628164…882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。
对的,我们所有的修改提交都有记录在这里,并且可以通过命令来还原原来的版本
git log 查看当前的操作记录
Git reset --hard 版本编号ID 或者是HEAD ^ 回到上一个版本中去
当你从新版本回到老版本的时候,我们的新版本自然就消失了,所以,如果你想回复到新版本的状态,你可以使用
Git reflog 查看下你每次的操作命令,并记录下版本ID编号,再次使用
Git reset --hard 版本编号ID 回到新版本中去。

现在总结一下:

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

也就是说
现在有3个版本
版本号:333
版本号:222
版本号:111
我现在用git reset —hard 222 退回到222版本,
git log 后 就看不到333版本了
必须要用git relog才能看到222之前的333版本号
然后在通过git reset —hard 333 恢复到333

理解概念:工作区,暂存区,仓库

在这里插入图片描述
add的操作是把所有的更改暂时放在暂存区,commit 操作就是真正的提交我们的代码
在这里插入图片描述

如果你试图修改,绕过了add部分的话,你提交的代码是无法真正进入仓库的,这是因为commit 的是暂存区内的内容,而你必须将你所做的修改add到暂存区才能commit成功

撤销你的修改

1.当你只是在源文件中修改了,而并没有add到暂存区的情况
2.当你不仅在源文件中修改了,并且还add了到了暂存区,索性的是你并没有commit 的时候
3.当你已经commit 提交到仓库的时候

下面,分别尝试着解决这三种情况

1.git checkout – 修改的文件名 感觉更像把暂存区退回到了工作区

感觉有点像把暂存区的内容拉到本地去

2.git reset HEAD readme.txt (文件名) 把暂存区的修改回退到工作区,也就是退回add之前的状态,最后再次git checkout readme.txt 结束

感觉更像是从仓库一路退回到了暂存区,然后又退回到了工作区

3.如果你已经commit 了,就直接用版本回溯到之前的版本就OK了
感觉reset命令就是为了在不同的仓库版本中切换

所以,这就是一级一级的退

删除文件

尽量用git rm 文件名删除(暂存区中删除),然后git commit 提交到版本库

如果误删的情况下,也就是说你只是在工作区误删了文件的话,可以用git checkout – 文件名恢复(从暂存区恢复)

第一步 :在需要git 管理的文件夹下打开git base here 
第二步:在git中进行项目管理的初始化 git init
第三步:在git中创建自己的项目文件
第四步:通过git add * 将所有的项目文件添加进去临时区域内
第五步:通过git commit -m 操作说明  将临时区域内的项目推送到本地的仓库上去
第六步:对项目进行修改之后,可以先看看修改了哪些东西,git diff 
第七步:确认完修改之后,可以通过git commit -a -m 操作说明 来进行上传了.
第八步:如果需要切换版本,只需要通过git reflog 查看下自己的操作历史,然后通过git reset --hard 版本号 就可以自由的切换不同的状态了。
第九步: 如需删除文件,使用git rm 文件名 来进行删除,然后通过git commit -a -m 提交
第十步:如果发生在本地误删的情况,可以直接使用git checkout 把临时区域的内容拉到本地

总结:

以上的知识只是个人在用的时候本地代码的一个管理而已,并不涉及远程多人共同协作,如果你只是在本地管理代码的话,上面的命令足够你使用了,因为毕竟你知道了如何让自己的代码库添加、删除、和回溯。代码的每一次修改也都会做记录,你可以随时恢复最新的版本和退回老的版本,并且比较每次代码的不同之处,找到原因。

创建自己的SSH

$ ssh-keygen -t rsa -C "youremail@example.com"

创建自己的ssh密钥,用于跟远程的服务器进行通信,它毕竟得知道这个是你亲自推送的代码才行。
在这里插入图片描述

将我们本地的仓库与远程的github 上的仓库连接起来

下一步,我们开始推送我们本地仓库上的内容

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:
git push -u origin master

要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

上面是从本地上传到远程库上去

如果想要从远程库中克隆一份,那么就使用git clone git 地址就可以了

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

说白了,克隆和推送都是为了创建本地和远程的一个连接,只要第一步连接好了,我们就可以进行下一步的操作了

分支管理

当然,你一个人管理代码的情况下,分支是没必要的,它主要体现在多人协同的情况下

Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>

在这里插入图片描述
结合版本回溯,master是主分支,各个分支点都是历史版本,目前指向最新的版本上
在这里插入图片描述
创建一个新的分支,叫做dev
在这里插入图片描述
目前我们的操作是在dev 分支上的,自然,我们现在就指向了dev,它跟master没什么关系了。
在这里插入图片描述
将DEV分支合并到主分支上去,分支其实就是为了在不影响主代码的情况下进行代码修改,根据实际情况跟最后的版本进行合并。
这里,我们要考虑一种情况,就是如果我在分支DEV中修改了内容,同时,我又在主分支MASTER中修改了内容,那么它们合并的时候一定会出现问题!!!

这里,不去考虑复杂的合并分支情况,一般我们开发的话,都会在分支上进行开发,确定没问题之后,合并到主分支中去。
在这里插入图片描述

实际情况的考虑:

远程分支和本地分支

两条分支最好是一一对应的,master分支和dev分支在本地和远程都有两条

创建分支确实挺容易的,也不复杂,这里就不考虑创建分支的成本性了。你可以理解为创建分支就是又创建一个工作区-暂存区-仓库这样的仓库2,现在你就拥有了仓库1,仓库2 了

目前感觉分支的操作都是在本地操作的,也就是针对本地分支的合并啊,在本地合并之后,再往同名的远程分支中push,那远程分支怎么完成合并呢?
在这里插入图片描述

一般我们git clone下网站源码的时候,默认情况下是主分支是有的,但其余的分支是没有的,这时候我们就需要在本地创建新的分支,这些分支对应着远程中的分支,然后将分支中的代码pull到本地去,比如远程的dev 分支要这么操作

git clone SSH地址 克隆整个项目(默认得到的就是主分支,其他分支并没有)
git checkout -b dev  在本地创建分支
git pull origin dev 从远程的DEV分支拉到本地的dev分支
git add ...
Git commit ...
Git push origin dev 修改完毕后传递到远程的dev分支上去

假设远程公共仓库,有一个master和一个dev分支,进行多人协作开发时候(每个人的公钥必须加入到远程账号下,否则无法push), 每个人都应该clone一份到本地。 但是clone的只是master,如果远程的master和dev一样,没关系;如果不一致,则需要clone出dev分支 git checkout -b dev origin/dev 之后每个人在本地的dev分支上独自开发(最好不要在master上开发), 开发完成之后push到远程dev git push origin dev。 之后审核人再确定是否合并dev到master。
在进行任何的push 操作之前,一定要先 pull 一下远程的分支代码,毕竟这个分支代码是被很多人修改的,你只有最新的版本才能和自己的修改合并才行。

目 录 第一章 引言 1 1.1 图像质量评价的定义 1 1.2 研究对象 1 1.3 方法分类 2 1.4 研究意义 3 第二章 历史发展和研究现状 4 2.1 基于手工特征提取的图像质量评价 4 2.1.1 基于可视误差的“自底向上”模型 4 2.1.1.1 Daly模型 4 2.1.1.2 Watson’s DCT模型 5 2.1.1.3 存在的问题 5 2.1.2 基于HVS的“自顶向下”模型 5 2.1.2.1 结构相似性方法 6 2.1.2.2 信息论方法 8 2.1.2.3 存在的问题 9 2.2 基于深度学习图像质量评价 10 2.2.1 CNN模型 10 2.2.2 多任务CNN模型 12 2.2.3 研究重点 15 第三章 图像质量评价数据集和性能指标 16 3.1 图像质量评价数据集简介 16 3.2 图像质量评价模型性能指标 17 第四章 总结与展望 19 4.1 归纳总结 19 4.2 未来展望 19 参考文献 21 第一章 引言 随着现代科技的发展,诸如智能手机,平板电脑和数码相机之类的消费电子产品快速普及,已经产生了大量的数字图像。作为一种更自然的交流方式,图像中的信息相较于文本更加丰富。信息化时代的到来使图像实现了无障碍传输,图像在现代社会工商业的应用越来越广泛和深入,是人们生活中最基本的信息传播手段,也是机器学习的重要信息源。 图像质量是图像系统的核心价值,此外,它也是图像系统技术水平的最高层次。但是,对图像的有损压缩、采集和传输等过程会很容易导致图像质量下降的问题。例如:在拍摄图像过程中,机械系统的抖动、光学系统的聚焦模糊以及电子系统的热噪声等都会造成图像不够清晰;在图像存储和传输过程中,由于庞大的数据量和有限通讯带宽的矛盾,图像需要进行有损压缩编码,这也会导致振铃效应、模糊效应和块效应等图像退化现象的出现。所以,可以说图像降质在图像系统的各个层面都会很频繁地出现,对图像质量作出相应的客观评价是十分重要且有意义的。为了满足用户在各种应用中对图像质量的要求,也便于开发者们维持、控制和强化图像质量图像质量评价(Image Quality Assessment,IQA)是一种对图像所受到的质量退化进行辨识和量化的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值