Git新手学习使用总结
开始学习使用git bash惹,一边摸索一边记录下自己的学习过程。
文章目录
- 关于Git
- Git是什么
- Git的主要功能:版本控制
- Git的工作流程
- 工作区、暂存区和版本库
- Git bash使用
- 登录
- 本地使用
- 创建仓库并初始化
- 文件添加和提交
- 文件修改
- 版本回退
- 版本恢复
- 本地仓库关联远程仓库
- 配置ssh
- 本地连接github仓库
- 克隆远程库
- 本地更新远程仓库的修改
关于Git
Git是什么
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git的主要功能:版本控制
关于版本控制我是这样理解的:一个文件你做了修改,得到一个新的版本,可很多时候你无法使文件回到以前的样子。所以很多人会选择把修改过后的保存到一个新文件中。久而久之文件越来越多,你很难弄清楚哪个文件做了什么修改。这个时候就需要进行版本管理。
Git来对这些不同的版本进行控制。还可以很方便地查看两个不同版本之间的不同之处。
Git的工作流程
- 克隆 Git 资源作为工作目录。
- 在克隆的资源上添加或修改文件。
- 如果其他人修改了,你可以更新资源。
- 在提交前查看修改。
- 提交修改。
- 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
工作区、暂存区和版本库
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
以下是菜鸟对这些知识的解释:
图中的 objects 标识的区域为 Git 的对象库,实际位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容。
当对工作区修改(或新增)的文件执行 “git add” 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
当执行 “git reset HEAD” 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
当执行 "git rm --cached " 命令时,会直接从暂存区删除文件,工作区则不做出改变。
当执行 “git checkout .” 或者 "git checkout – " 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。
当执行 “git checkout HEAD .” 或者 "git checkout HEAD " 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
Git bash使用
登录
申请了自己的github账号,下载git之后打开git bash。
配置本机的用户名和邮箱。
$ git config --global user.name "Your Name"$ git config --global user.email "email@example.com"
本地使用
创建仓库并初始化
新建一个文件夹,在目录下建一个test文本,**创建test.txt的时候记得编码设置为UTF8,否则会出现乱码。右键点击git bash。
test的内容随便写啦。。。。
输入git init初始化仓库
.git文件自动生成了,作用上文已经讲过啦,不能删噢。
文件添加和提交
$ git add 文件名.文件类型
添加我们之前创建的test文件
如果一个个添加太麻烦惹,我们还有其他方法!
git add -A 提交所有变化
git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
by the way! 我们可以使用git status来查看状态
添加成功辣,我们先在可commit了
$ git commit -m “修改注释”
提交后git log可以查看日志!
文件修改
我们添加文件后,文件开始被追踪了,这时我们可以git status看看两次的不同喔!
怎么看我们修改了什么呢?
使用$ git diff 文件名+类型
也可以查看文件的内容
$ cat 文件名
这个要注意的是必须在文件夹里有那个文件你才可以查看。
如果我现在想撤销更改,执行git checkout – .
然后打开文件看看,它果然复原辣!
然后我们再次修改文件内容。
执行添加,提交步骤。查看日志可以看到两个版本辣。
版本回退
从上面的提交日志,黄色commit后面的一串数字,我们把它称为版本号吧!版本回退命令 :
$ git reset --hard 版本号前7位
查看文件,已经回到第一个状态了!
这是再git log查看日志,commit记录只有一个了,
想了解版本回退的原理看廖雪峰老师这个解释!很清楚鸭!
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000/
版本恢复
输入git reflog查看之前的版本,然后再次git reset --hard到需要的版本即可。
本地仓库关联远程仓库
配置ssh
首先生成ssh
$ssh-keygen -t rsa -C “你的邮箱”
出现了这两行。这是让你输入保存这个秘钥的文件,不输入直接回车它会自动生成。
回车以后让你输入push的时候需要的密码,也可以不输入直接回车,这样push的时候就没有密码。
再回车。
这样ssh key已经创建成功辣
然后我们输入以下命令复制ssh key
clip < ~/.ssh/id_rsa.pub
进入github,进入Settings
点击左边的ssh and GPG keys
点击New SSH key,title随便起就好辣,然后把之前复制的ssh key粘贴,然后点击下面的Add SSH key。
添加成功后你的邮箱会受到信息!执行以下命令测试连接是否成功。
$ ssh -T git@github.com
连接成功
这里出现了SSH警告 Are you sure you want to continue connecting (yes/no)?
这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:Warning: Permanently added ‘github.com’ (RSA) to the list of known hosts.
这个警告只会出现一次,后面的操作就不会有任何警告了。
本地连接github仓库
创建一个新仓库
复制SSH地址,然后执行以下命令
$git remote add origin 你复制的地址
我的出现了fatal: remote origin already exists.错误,解决方案如图所示。
输入git remote -v验证一下会出现你添加成功的远程仓库。
如果你以后不想连接这个远程仓库了,只需要输入git remote remove +代称即可
by the way!如果你在创建 repository 的时候,加入了 README.md 或者 LICENSE ,那么 github 会拒绝你的 push 。你需要先执行 git pull origin master。
然后执行如下命令:把本地仓库上传至Github的仓库并进行关联
$ git push -u origin master
刷新github,关联成功了。
克隆远程库
执行 git clone 复制的SSH地址
如果是直接clone了别人的仓库是没法push自己的修改的。你需要先fork到自己的远程仓库,然后再从自己那里clone。
如果clone了一个项目,并想为这个项目贡献自己的力量,你就可以往自己的仓库推送!然后在GitHub上发起一个pull request。
本地更新远程仓库的修改
因为一个项目有很多人参与,如果远程仓库改变了,你想确保自己的文件和远程的一样。执行以下代码
$ git pull origin
或者
可以输入两句“git fetch”和“git merge”
$ git fetch
$ git merge
以下是我学习的一些博客,感谢这些大神们无私的分享!
https://blog.csdn.net/qazwsxpcm/article/details/68946736?utm_source=blogxgwz0#t1
http://www.cnblogs.com/schaepher/p/5561193.html#function
https://blog.csdn.net/qq_36667170/article/details/79085301#t0
Git新手学习使用总结相关推荐
- externalreferences 命令在 sdi 模式下不可用_一个适合新手交互式Git命令学习项目
前言 在我们日常工作开发中,Git是必不可少的版本控制软件,很多时候我们都用Git来管理我们的项目. 比较常用的有Github,Gitlab,Stash等. 因此对于Git命令的掌握是我们工作必备的能 ...
- Git新手教程-添加忽略文件(十)
title.jpg 前言 通过前面的文章,我相信大家已经对 Git 有所掌握了,现在还剩下最后一个知识点,就是让 Git 添加忽略某些文件.在实际的项目开发中,我们可能不想将一些文件添加到 Git 仓 ...
- Vue 新手学习笔记:vue-element-admin 之入门开发教程(v4.0.0 之前)
说实话都是逼出来的,对于前端没干过ES6都不会的人,vue视频也就看了基础的一些 但没办法,接下来做微服务架构,前端就用 vue,这块你负责....说多了都是泪,脚手架框架布了都没看过 干就完事,不过 ...
- 课工场java新手基础教程_Java新手学习路线,学Java不走弯路
Java新手学习路线,学Java不走弯路 很多人都会有一个疑问,就是学习Java能看懂,但是不会写,所以学习Java一定要掌握一个有效率的学习方法,一个适合自己的学习方法,作为一个新人,千万不要自己瞎 ...
- 《Got Git》学习笔记(一)
<Got Git>学习笔记(一) 最近想对自己的代码和文档进行归档整理,需要一个版本控制系统来进行 处理.自然而然的想到了目前流行的GitHub. GitHub,是一个面向开源及私有软件项 ...
- python难不难学-超级适合新手学习的python教程,入门其实不难?
在互联网时代很多人都希望掌握一个与互联网相关的知识,比如Python的知识就非常重要,因为无论是操作新媒体平台还是去制作一些软件,我们都需要掌握一些Python的技巧,而且学习一些Python的知识, ...
- git 提交命令_工作总结:Git的学习和使用,最详细的Git教程,从入门到精通
前言 Git简介 实用主义 深入探索 总结 参考资料 前言 Git 是程序员学习和工作都离不开发工具,今天和大家分享 Git 常用命令总结. Git简介 Git 是一种分布式版本控制系统,它可以不受网 ...
- 新手学习DaVinci笔记一:查找资料篇
最近要学习DaVinci DM8148,由于之前没有接触操作过,TI的网页数据量很大.在网上零碎的查阅资料,一步一步的总结出来.本篇是TI查找资料篇,以DM8148为参考. 1:进入Ti官方网站,TI ...
- 按照一定策略把网页抓回到搜索引擎服务器的,SEO新手学习:搜索引擎的基本步骤...
初始搜索引擎的原理:第一步就是需要了解"搜索引擎的基本步骤". 搜索引擎的基本步骤(大概架构)如下.可以分成虚线左右两个部分:一部分是搜索引擎抓取:主动抓取网页进行一系列处理后建立 ...
最新文章
- 数据蒋堂 | JOIN运算剖析
- 在c语言中,字符串topt65的长度是,谭浩强c__程序设计第13章.ppt
- 徐起预热realme Q5系列:骁龙870+80W快充 新一代千元机皇
- 如何删除 macOS 压缩包中的隐藏文件?
- 你可能不知道的shell、bash二三事(Centos 7)
- Node.js:node项目中连接postgresql以及基础使用
- KITTI数据集介绍
- uni-app 简介
- 计算机桌面上的图标如何删除,怎么删除电脑桌面上的图标啊?
- 5G网络的关键技术及特点整理
- Elasticsearch索引生命周期
- 3D机器学习(4):pytorch入门3:张量的拼接与拆分、张量的运算、张量的统计
- Centos8上安装中文字符集zh_CN.UTF-8
- 根号3表白html,根号三的那句情话
- mme 服务器位置,MME、PGW、SGW和PCRF的介绍
- 【硬件深似海】磁珠选型规范
- 美国虚拟PSTN号码
- 阿拉伯数字对应人民币大写表
- 如何使用VMware安装wim或gho格式镜像
- 当前应用计算机解决实际问题的能力主要体现,当前,应用计算机解决实际问题的能力主要体现为能够熟练使用OFFICE和网页制作工具操作计算机。...
热门文章
- 根据excel里面的内容寻找文件
- 电子学会 2022年9月 青少年软件编程Python编程等级考试一级真题解析(选择题+判断题+编程题)
- 苹果试玩初级流程(非无限刷)
- 5分钟搭建一个粗粒度「视频去重」系统
- HCIE课程笔记6-ISIS配置
- undefined reference to `av_register_all‘ 相关问题 FFmpeg被声明为已否决情况
- win7打印机共享要怎么设置?
- Bottleneck瓶颈型结构
- request_irq和free_irq的使用
- Power BI: 使用书签功能实现选项卡效果