开始学习使用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新手学习使用总结相关推荐

  1. externalreferences 命令在 sdi 模式下不可用_一个适合新手交互式Git命令学习项目

    前言 在我们日常工作开发中,Git是必不可少的版本控制软件,很多时候我们都用Git来管理我们的项目. 比较常用的有Github,Gitlab,Stash等. 因此对于Git命令的掌握是我们工作必备的能 ...

  2. Git新手教程-添加忽略文件(十)

    title.jpg 前言 通过前面的文章,我相信大家已经对 Git 有所掌握了,现在还剩下最后一个知识点,就是让 Git 添加忽略某些文件.在实际的项目开发中,我们可能不想将一些文件添加到 Git 仓 ...

  3. Vue 新手学习笔记:vue-element-admin 之入门开发教程(v4.0.0 之前)

    说实话都是逼出来的,对于前端没干过ES6都不会的人,vue视频也就看了基础的一些 但没办法,接下来做微服务架构,前端就用 vue,这块你负责....说多了都是泪,脚手架框架布了都没看过 干就完事,不过 ...

  4. 课工场java新手基础教程_Java新手学习路线,学Java不走弯路

    Java新手学习路线,学Java不走弯路 很多人都会有一个疑问,就是学习Java能看懂,但是不会写,所以学习Java一定要掌握一个有效率的学习方法,一个适合自己的学习方法,作为一个新人,千万不要自己瞎 ...

  5. 《Got Git》学习笔记(一)

    <Got Git>学习笔记(一) 最近想对自己的代码和文档进行归档整理,需要一个版本控制系统来进行 处理.自然而然的想到了目前流行的GitHub. GitHub,是一个面向开源及私有软件项 ...

  6. python难不难学-超级适合新手学习的python教程,入门其实不难?

    在互联网时代很多人都希望掌握一个与互联网相关的知识,比如Python的知识就非常重要,因为无论是操作新媒体平台还是去制作一些软件,我们都需要掌握一些Python的技巧,而且学习一些Python的知识, ...

  7. git 提交命令_工作总结:Git的学习和使用,最详细的Git教程,从入门到精通

    前言 Git简介 实用主义 深入探索 总结 参考资料 前言 Git 是程序员学习和工作都离不开发工具,今天和大家分享 Git 常用命令总结. Git简介 Git 是一种分布式版本控制系统,它可以不受网 ...

  8. 新手学习DaVinci笔记一:查找资料篇

    最近要学习DaVinci DM8148,由于之前没有接触操作过,TI的网页数据量很大.在网上零碎的查阅资料,一步一步的总结出来.本篇是TI查找资料篇,以DM8148为参考. 1:进入Ti官方网站,TI ...

  9. 按照一定策略把网页抓回到搜索引擎服务器的,SEO新手学习:搜索引擎的基本步骤...

    初始搜索引擎的原理:第一步就是需要了解"搜索引擎的基本步骤". 搜索引擎的基本步骤(大概架构)如下.可以分成虚线左右两个部分:一部分是搜索引擎抓取:主动抓取网页进行一系列处理后建立 ...

最新文章

  1. 数据蒋堂 | JOIN运算剖析
  2. 在c语言中,字符串topt65的长度是,谭浩强c__程序设计第13章.ppt
  3. 徐起预热realme Q5系列:骁龙870+80W快充 新一代千元机皇
  4. 如何删除 macOS 压缩包中的隐藏文件?
  5. 你可能不知道的shell、bash二三事(Centos 7)
  6. Node.js:node项目中连接postgresql以及基础使用
  7. KITTI数据集介绍
  8. uni-app 简介
  9. 计算机桌面上的图标如何删除,怎么删除电脑桌面上的图标啊?
  10. 5G网络的关键技术及特点整理
  11. Elasticsearch索引生命周期
  12. 3D机器学习(4):pytorch入门3:张量的拼接与拆分、张量的运算、张量的统计
  13. Centos8上安装中文字符集zh_CN.UTF-8
  14. 根号3表白html,根号三的那句情话
  15. mme 服务器位置,MME、PGW、SGW和PCRF的介绍
  16. 【硬件深似海】磁珠选型规范
  17. 美国虚拟PSTN号码
  18. 阿拉伯数字对应人民币大写表
  19. 如何使用VMware安装wim或gho格式镜像
  20. 当前应用计算机解决实际问题的能力主要体现,当前,应用计算机解决实际问题的能力主要体现为能够熟练使用OFFICE和网页制作工具操作计算机。...

热门文章

  1. 根据excel里面的内容寻找文件
  2. 电子学会 2022年9月 青少年软件编程Python编程等级考试一级真题解析(选择题+判断题+编程题)
  3. 苹果试玩初级流程(非无限刷)
  4. 5分钟搭建一个粗粒度「视频去重」系统
  5. HCIE课程笔记6-ISIS配置
  6. undefined reference to `av_register_all‘ 相关问题 FFmpeg被声明为已否决情况
  7. win7打印机共享要怎么设置?
  8. Bottleneck瓶颈型结构
  9. request_irq和free_irq的使用
  10. Power BI: 使用书签功能实现选项卡效果