Git简单使用与远程仓库(Github)的使用

版权声明:本文为博主原创文章,若需转载,请评论说明,并在文章显著位置标明原文出处。 https://blog.csdn.net/lishang6257/article/details/83500694

Git简单使用与远程仓库(Github)的使用

1 前言

对于Git的使用,学习动机有两点,第一是管理Github的时候比较麻烦,这点我做过两次尝试(桌面版Github以及Github的网页级),这很令人不爽,鼠标操作让人窒息,而且上传时速度比较捉急。第二是基于实际个人需求的,我在coding一些不大不小的东西的时候,总是想尝试添加一些New Feature,每次的操作都是复制一个新的项目,但是随着想法的增多,这容易带来一些不确定的结果,文件夹多了,切换错呀,不记得做了哪些改动呀。Git的时代就来了。一晚上看了下一些视频和Git的官方的文档,记录一下。
说一下总体感觉,视频是在b站看的,感觉 一般,官方文档还是相当好,能快速找到自己需求的东西。推荐文档主要,视频辅助。最有趣的还要数 L i n u s Linus 大神和Git的那段趣事,这里就不展开了。

2 Git 安装

Linux、Windows、mac os 前往官方下载
安装后配置环境变量:将安装目录"**\git\cmd"添加得到环境变量的path条目下

3 Git 使用

据我简单的上手体验,使用前需要思考三点

  1. Git 如何实现不同版本的管理,包括前进,回滚这两个基本问题
  2. Git 如何管理多分支,其实就是多人如何管理多版本,一个很常见的例子,Android系统的开发,像稳定版,开发版,内测版这种东西。
  3. Git如何实现分布式,和集中式(SVN)有什么区别,优劣体现在哪,主流的公司再用什么?

3.1 start

  1. 首先注册一个在版本管理中一个独一无二的用户

    git config --global user.name lishang6257
    git config --global user.email [email protected]
    
  2. 创建本地版本库(repository)

    cd "指定路径"
    git init
    
  3. 提交文件

    git add "提交的文件(相对目录或者绝对目录)"git commit  -m "提交说明:修改了...." 
    
  • 特别的git add * 是当前文件夹下的所有文件
  • add 指令是将文件先放在Stage(暂存区域),commit指令是将暂存区上传到Repository(版本库)中
  • git add -u 只提交更新的文件

3.2 中场休息

在我们继续下去的时候,我们需要先说一下基本原理和不得不说几个命令。

3.2.1 基本原理

单纯只说本地上的git管理而言,Git存储在三个区域(工作区域,暂存区域,版本库),Git的管理也就是三个区域的文件以及指向三个区域的指针(head)的切换。这边盗一张图(图片来源gaibian0823),基本的操作可以很好的解释。
引用

3.2.2 重要的命令

  • git status
    这个是一个辅助性的指令,主要是看看你现在这个git库是不是正常(是不是有文件的异常增删改)以及提供一些指导性意见,比如(要不要add,commit之类的)
  • git log
    为什么要先说这个呢?每一个快照是以hash值作为唯一标识,这里我们可以看到每一个历史快照,也可以看到每个快照的更新说明,这样就方便我们去寻找并快速的切换到该快照。
  • git reflog
    在我们日常使用时,可能会使用一些匿名的分支,然后切到其他分支时,就消失在版本的长河中了;或者说我们回退到历史的快照中时,两个快照的断层就出现了;这个指令就是针对这些类似状况的,可以查看历史记录的版本号id
  • git diff
    这个指令也是为了帮助程序猿比较两个快照(或者仅仅是快照中的几个指定文件)具体有什么不同的,linux可以辅助用vim/vi在编辑,当年 L i n u s Linus 就是用diff工具(linux上的系统指令)去寻找不同开发者发给他Linux源码。

3.3 回退

到现在,已经简单了解git是如何进行版本更新的,而且通过中场“休息”也知道回退到想要回退的版本号,那么就继续聊git的故事。

  • git reset
    在这里插入图片描述
    从这个帮助中可以看到reset命令主要是移动指针head用的,同时--hard是可以覆盖工作区域的(所以使用时要小心),指针通常是指当前的分支,指针移动意味你在历史记录中的版本畅游,自由的切换。

3.4分支

这个算是git的一个亮点,与集中式的版本控制相比,指针的移动,速度加快。【这一点博主不是很明确,需要进一步的学习】
在这里插入图片描述

  • git branch 分支名
    例如 git branch release
    主要用到-b(创建并切换到该分支)
    –list 显示所有的分支名
    -m 重命名分支
    其他博主的使用场景下并不是很常见
  • git checkout
    这个指令主要是在分支中来回切换,注意的是工作区域会随着切换而改变。有一点值得说的是,在切换时会自动检查下当前的git库的状态,不用为切换文件没保存苦恼。

4 远程库的管理(github连动)

4.1 ssh上传

首先就是将本机的ssh密钥上传到github上,注意是自已的邮箱

ssh-keygen -t rsa -C "[email protected]"

在这里插入图片描述
当前用户下就可以看到这个密钥和公钥了
在这里插入图片描述
然后就是github个人设置中,找到ssh上传入口,将公钥上传就那个*.pub的文件
测试一下是不是能连上

ssh [email protected]

4.2 远程仓库的建立

例如我在github建立了一个空的Repository,命名demo

git remote add pb https://github.com/lishang6257/demo

pb是本地对该远程仓库的命名

4.3 推送到远程仓库

git push pb master

这个pb就是远程库在本地的名字,master是推送到远程库哪个分支中

  • 特别的,当有多分支 git push pb local:remote ,local是指本地分支,remoter是指远程分支,若远程分支不存在时,会自动新建

4.4 从远程库抓取

就如刚才所见,从远程仓库中获得数据,可以执行:

$ git fetch [remote-name] 这个命令会访问远程仓库,从中拉取所有你还没有的数据。
执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。

如果你使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。 所以,git fetch
origin 会抓取克隆(或上一次抓取)后新推送的所有工作。 必须注意 git fetch 命令会将数据拉取到你的本地仓库 -
它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。

如果你有一个分支设置为跟踪一个远程分支(阅读下一节与 Git 分支 了解更多信息),可以使用 git pull
命令来自动的抓取然后合并远程分支到当前分支。 这对你来说可能是一个更简单或更舒服的工作流程;默认情况下,git clone
命令会自动设置本地 master 分支跟踪克隆的远程仓库的 master 分支(或不管是什么名字的默认分支)。 运行 git pull
通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。

https://git-scm.com/book/zh/v2/Git-基础-远程仓库的使用

4.5 删除与重命名

git remote rename pb paul
git remote

5 心得

git 利器不接受反驳,可以让从代码管理中得到解脱,自然学习也是需要一些成本的,博主学习里一整个晚上,目前基本可以应付自己的小项目的管理,上面的整理也是我在这几天用的较多的或者个人认为比较重要的几点。
不过文章中有几点不足,还望谅解

  1. 对git的原理的理解比较肤浅,仅仅针对了实际应用场景,说的可能存在瑕疵
  2. 文章中图片比较少,仅仅你指出了几个关键步骤的,需要读者自行实践,如果有任何问题,留言区会在三四天内给出回复
  3. 如果有什么问题可以向博主反馈

猜你喜欢

转载自blog.csdn.net/lishang6257/article/details/83500694