GitHub理论与实践——0. 快速上手

本节目标:

   本节主要目的是让小白迅速使用Github进行代码拉取、代码提交操作。从而可以立即开展工作。关于Github更多、更详细的内容见后续文章。本文的主要目标是:
    1. 创建本地版本库
    2. 从远程库拉取代码到本地库
    3. 将本地库代码提交到远程库
  前置条件:你需要安装好Git bash,拥有自己的Github账号。

为什么要用Github

   为了实现协同办公!

   Github和Git是有区别的。Git简单地讲,是一个保存文件修改记录的版本管理系统,你对文件的所有更改都会被它记录下来,供你恢复历史文档。Git将一个文件夹作为进行版本管理的目标(即是仓库)。Git有本地的仓库,也有远程的仓库。

  Github是一个实现了Git的文件服务器。你可以将文件上传到这个服务器中,也可以从这个服务器下载文件到本地。为了安全、可靠地进行文件同步(上传、下载),定义了一系列的指令和方法。Github可以用来处理所有的协同办公,但通常使用Github进行协同办公的是软件开发。本文也主要是以软开为背景。

核心概念

  要实现从远程库中下载文件或者将文件上传到远程库,从建库到同步完整的流程如下:
    创建本地库 --> 添加远程库地址 --> 拉取or提交文件到远程库。

  使用Github进行软件开发通常的业务流程是:
    拉取远程库代码,使本地库保持最新内容
     --> 在本地进行开发
      --> 开发完成,准备提交时,再次从远程库拉取代码,并解决冲突
       --> 将本地文件更改提交到本地库
        --> 将本地库推送到远程库。

   直观上就是一个文件夹。不同的是,这个文件夹下有一个 .git 的隐藏文件夹。这个隐藏文件夹里保存在git的HEAD、index、config等。正如你所想的,里面的config文件保存着当前库的配置信息。

工作区

   工作区、暂存区、HEAD是Git为操作实现文件进行版本回滚等功能而设计的三个逻辑概念。逻辑上,它们都是一个区域,用来存放文件。工作区是可以直观看见的,它是你的工作目录,它持有实际文件。

暂存区

   暂存区(Index),它像个缓存区域,临时保存你的改动。

HEAD

   HEAD区保管着你最后一次提交的结果。它更像是C语言中的指针,指向你最后一次提交的结果。

分支

  简单地讲,分支就是一个库分成多个库,实现在一个库里完成不同的操作。你可以给每个参与者一个分支,每个人提交代码时只提交到自己的分支。但通常的做法是,根据项目所在阶段制定分支,比如分为开发分支、发布分支、主分支。如果不进行分支合并,每个分支上的操作都是相互独立的,不会相互影响。

创建本地版本库

   创建库:在所在文件夹下运行GitBash,然后运行 git init 创建并初始化一个Github本地仓库。
   通过 git add [filename] 将工作区的文件提交到暂存区。
   通过 git commit [msg] 将暂存区的内容提交到本地仓库。

从远程库拉取代码到本地库

  也许你当前只是想从Github上下载别人的代码,因此我将克隆库放在了前面。

克隆远程库到本地

   从GitHub上克隆一个库,不需要在本地创建库。只需要如下操作:
      1. 在想保存远程库副本的地方运行git bash;
      2. 进入ssh-agent环境;
      3. 执行 git clone 指令—— git clone git@github.com:reponame.git

   需要注意的是,本地副本保存在以reponame为名字的文件夹下的。
  对于一个新库,从远程克隆到本地的方法是,也是如此。
  
  不论是从远程库拉取代码,还是向远程库推送代码,都需要先将本地库与远程库建立起同步关系。

将本地库与远程库建立连接

  通过 git remote add origin git@github.com:yourRepository.git 将远程库地址添加到本库。这样就可以将本地库中的文件上传到远程库中,或者从远程库中下载文件到本地。

将远程库文件拉取到已有库中

   在协同开发中,常常是每个人开发一部分,然后将自己完成的工作上传到远程服务器中,其他人再从服务器拉取最新代码到本地。与直接克隆整个库不同,对于已经和远程库建立了同步关系的本地库从远程库中拉取代码的方式是:git pull 。如果仅仅是拉取服务器最新文件到本地,只需要这一条操作。后面的文章将介绍具有更多附加功能的拉取操作。

将本地库代码提交到远程库

   在将更改提交到远程库之前,首先需要将更改从工作区添加到暂存区,然后再从暂存区提交到本地库的HEAD,最后从HEAD推送到远程库。
  将更改添加到暂存区的指令是 git add [filename] 。也可使用 git add * 将所有更改添加到暂存区。没有添加进暂存区的文件,将在git bash中显示为红色。
  将暂存区文件提交到HEAD的指令是 git commit [-m msg] 。-m msg表示添加提交信息。没有提交到HEAD的文件,将在git bash 中显示为绿色。
  将HEAD推送到远程库的指令是 git push origin branchName

  至此,你应该已经可以实现从github 上拉取代码、向github提交代码了。如果有疑问,可以在评论区留言。

额外的操作

git bash的使用

  git bash是适用于Windows系统的 git 命令行控制管理客户端。bash是Linux系统下的指令操作程序。因此,git bash就是用于Windows的Linux命令行程序。在git bash中完全支持Linux指令,也支持部分Windows的DOS指令。不过虽然Linux系统严格区分大小写,但是git bash中不区分大小写。

  但是需要注意的是:git bash对于 库名 却是区分大小写。
  比如远程库名为:git@github.com:SpringFramework/Springboot.git。在克隆时,使用的指令为git clone git@github.com:springframework/springboot.git则本地保存的文件夹名即为“springboot”。

使用SSH链接方式

创建并使用SSH key

启动 git bash 程序,然后输入指令  ssh-keygen -t rsa -C "your Github account email "  创建本地的SSH key文件和指纹。如果成功,则会在你刚才指定的目录下生成两个文件,其中一个.pub可以 用文本编辑器打开。.pub文件里面以 “ssh-rsa” 开始的内容就是公钥指纹。另一个文件就是秘钥文件。

使用SSHkey

  如果在生成ssh key时没有修改保存路径,则一般可以直接使用ssh通信了。验证是否成功的方式是:在git bash中输入指令: ssh -T git@github.com  。如果显示链接成功,则表明ssh 正常工作了。如果出现授权失败,则需要下面的操作。
  在使用SSH与Github 通信之前,需要先将秘钥文件添加到当前的库中。在Gitbash中查看当前库是否已经添加秘钥的指令是  ssh-add -l 。如果没有,则需要使用  ssh-add /path/to/rsa/file  来添加秘钥文件。
  注意:ssh-add 指令需要在ssh-agent环境中使用。在git bash中输入 ssh-agent 指令可查看是否处于 ssh-agent 环境。如果没有进入ssh-agent环境,则会报 “Could not open a connection to your authentication agent.” 错误。可以先使用  eval "$(ssh-agent -s)" 进入ssh-agent环境。然后再使用  ssh-add  指令。

配置Github

配置github账户信息

配置单个仓库信息

git config user.name "your name"
git config user.email "your email"

配置全局信息。如果涉及到保密,最好不要将某些信息配置为全局的。

git config --global user.name "name"
git config --global user.email "email"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值