zoukankan      html  css  js  c++  java
  • 菜鸟级的Git与GitHub使用总结(转)

    菜鸟级的Git与GitHub使用总结

    原创 2016年12月01日 14:58:30

    前言

               这几天一直在折腾学习Git和GitHub的使用。几天下来,在网上查阅了大量的资料,总算有一些成果。作为一个已经工作两年了的菜鸟程序员,现在才来学习使用Git及github,实在忏愧。网上某大神说的好,不会使用Git和github,根本算不上是Coder,而只是一名code搬运工,因此在这里我将我这两天折腾学习成果及心得在此做个总结,以方便以后查阅。

    Git与github介绍

    Git:代码版本控制管理工具(类似SVN)

    官网下载地址:https://git-scm.com/downloads

    下载安装过程就不在此叙述了,安装成功后,在资源管理器任意位置单机右键,弹出的对话框包括如下图选项:

     

    声明:本人只在windows环境下开发,文章所有内容都只是针对Windows系统下的说明(本人系统Windows10),其它高大上的什么Linux/Mac等环境下是怎么样我就不得而知了(PS:穷,用不起Mac/Linux快哭了)。

     

    说明:

    Git GUI Here:点击打开Git图形化管理界面(因为网上大多都只是介绍了Git Bash Here这一块的使用,我也还没来得及研究这一块功能,这里就不做介绍)

    Git Bash Here:点击打开Git命令终端窗口(类似Linux下的shell)如图:

    我们提交、更新文件等操作都可以通过git命令在此完成(下面介绍)。

    Github:

    这是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。Github由Chris Wanstrath, PJ Hyett 与TomPreston-Werner三位开发者在2008年4月创办。迄今拥有59名全职员工,主要提供基于git的版本托管服务。


    github官网:https://github.com/

    至此,我们知道,Git是我们电脑本地的代码或文件版本管理工具,而github是代码或文件托管云平台。首先,明确我们的目标。我们的目标是,将本地代码同步到github平台上。OK,就这么一个小目标偷笑

    1.注册登陆到github官网(这里不用叙述吧)

    2.创建仓库(Repository)

    登陆github后,点击右上角加号,选择“New repository”,进入页面如下:

    填写好你的仓库名称(Repository name)、描述(Description),选择Public(当然,如果你是土豪,也可以选择Private,要付费的哦),最后一个选不选无所谓。点击下面绿色按钮create repository,仓库就建好了微笑。进入下一个页面,如果你在上一步操作没有选择Initialize this repository with a README选项的话(即创建的仓库里没有任何内容,选择了它会自动初始化生成一个README.md文件),你看到的页面如下:

    这里有一些提示操作内容,就是告诉我们怎么样往这个仓库里添加文件了。注意到,这里的提示操作都是git操作,因此我们要转战到我们的Git工具上了。

    不过别急,再次之前,我们还有一件事情要做。

    什么呢?添加SSH Key。

    什么鬼?这是什么东东?干嘛用的?不加这个东西会怎么样?

    我也不知道偷笑。好,这里就先跳过一些步骤操作Git,看看我们不加这个什么SSH Key会怎么样。

    先掠过一些步骤,我们直接到Git提交代码操作(没有添加SSH Key的时候)看看会出现什么情况。

    遇到点问题,以后再写。。。尴尬

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    好尴尬,好尴尬,真的好尴尬!!!怎么回事呢?按理说,根据github官方API说明,本地Git要和远程github建立联系,是需要在本地Git生成SSH Key,再将SSH Key添加到你的github上的。然后我们才可以在本地Git执行commit、push等操作。但是……但是,就在刚才我要试验没有添加SSH Key会出现什么情况时,就是将github上的SSH Key delete后,在本地执行commit、push操作,竟然成功了惊讶,成功了……成功了?WTF?(一脸懵逼)

    看看官方文档解释:

    SSH keys are a way to identify trusted computers without involving passwords. 
    You can generate an SSH key and add the public key to your GitHub account by following the procedures outlined in 
    this section.

    什么意思呢?用我拙劣的CET-4水平翻译下:SSH Key是一种不需要通过密码而与计算机建立信任的一种秘钥(有点像accessToken)。

    就是说,本地计算机Git可以通过SSH Key与远程github建立一种信任关系,从而在本地不需要密码就能执行相应git操作。

    恩,是这个意思吧。记得我初次安装好Git,还没添加SSH Key时执行commit等操作时是失败的,提示:

    fatal: Could not read from remote repository.

    Please make sure you have the correct access rights
    and the repository exists.

    意思很明显,就说你没有权限(还没有和github建立信任关系)。所以根据github官方说明我添加SSK Key后,所有git操作都能顺利执行。至于现在删掉SSH Key之后为什么还能执行相应操作?我也不清楚,你说为什么呢?@张鸿洋@郭霖(莫非是因为我之前通过SSH Key连接过,所以github已经记录了电脑的id并保持了之前的信任关系?)

    哎,先不管这茬,我们还是按照官方要求的来,继续吧……

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    创建SSH Key

    按github官方要求,在创建SSH Key之前,我们先检测下我们电脑是否已经存在SSH Key。在Git Bash下执行下面命令:

    type %userprofile%.sshid_rsa.pub

    如果检测到存在,则会返回一大串以ssh-rsa开头的字符串,没错,这就是SSH Key

    这里再说下我遇到的怪事,我在Git Bash下执行这条命令时查找不到SSH Key,提示:bash: type: %userprofile%.sshid_rsa.pub: not found,但是我在cmd下执行时显示的又是有SSH Key的(实际上也确实是存在的)。

    如果你显示的也是存在的,那恭喜你可以跳过这一步,直接把这串以ssh-rsa开头的字符串拷贝添加到github上就行了。

    如果不存在,没关系,我们创建,执行下面命令:

    [plain] view plain copy
     
    1. <span style="font-size:14px;">ssh-keygen -t rsa -C "***@***(你在github上注册的邮箱地址)"</span>  
    回车后它会要求你设置验证密码,也可为空

    OK,在此执行检测命令就可以看到了。

    然后到github上点击右上角头像选择“setting”,选择“SSH and GPG Key”,点击New SSH key,按步骤添加就行了。

    点击Add SSH key就OK了。可能会要你输入验证密码,就是你的github账户密码。

    至此,完成这些步骤,我们就完成80%的工作了。

    接下来就是配置在Git上配置我们的用户信息了。执行下面命令:

    $ git config --global user.name "userName"
    $ git config --global user.email  "userEmail"

    更多关于config的信息,可以查看官方说明:点击打开链接

    好了,一切就绪,我们来实现我们的小目标吧奋斗

    将本地文件同步到github一般步骤:

    在该文件目录下打开Git Bash,按顺序键入以下命令:

    1.      git init:将当前目录初始化为git 仓库(Repository),命令执行完毕后会在当前目录下生成一个.git隐形文件夹,里面包涵了一些git仓库初始配置文件

    2.      git add . :将当前目录下的所有文件和文件加及其子文件加入git版本控制(除了一些被过滤的文件),执行后说明现在这些可以提交到服务器了。当然你也可以添加指定文件(git add fileName)。注意,add 后面跟着“.”,表示当前目录。

    3.      git commit –m “commit message”:提交文件到缓存,并加上提交信息(必须)

    4.      git remote add origin https://github.com/username/gitProject.git:(对应的github远程仓库地址)。如果你是第一次提交项目,这一句非常重要,这是你本地的当前的项目与远程的哪个仓库建立连接。

    例如:git remote add origin https://github.com/username/gitProject.git

    5.      git push –u origin master:将你刚刚add的文件上传到github对应仓库

    如果成功,你登陆到github查看相应仓库就可以看到你刚刚提交的文件,并带有commit信息。

    6.      git status:查看是否提交成功与否。如果执行后返回信息没有红色或绿色(默认颜色,一些改动过但还未同步到github上额文件信息)文字,这表明当前无可提交内容,即提交成功。

    将github远程文件克隆到本地一般步骤:

    1.      找到合适的文件位置创建目录(作为接下来要克隆github上项目的本地仓库)

    2.      git init:进入新建目录,跟上面一样初始化本地仓库

    3.      git clone https://github.com/username/gitProject.git:将远程仓库文件clone到本地

    最后,加一些我们在执行Git命令是可能会遇到的一些问题:

    可能遇到的问题:

    1.      执行gitpush –u origin master,出现如下错误提示:

    error: srcrefspec master does not match any.

    error: failed to push some refs to'https://github.com/zhusp1990/PenpaiNews.git'

    原因:本地仓库为空

    解决办法:执行下面命令

    git add . (将当前目录下的所有文件添加到版本控制)

    git commit –m ‘commit message’ (提交信息)

    2.      执行git push -u origin master,出现如下错误提示

    To https://github.com/zhusp1990/PenpaiNews.git

     ![rejected]        master -> master(fetch first)

    error: failed to push some refs to'https://github.com/zhusp1990/PenpaiNews.git'

    hint: Updates were rejected because the remotecontains work that you do

    hint: not have locally. This is usually caused byanother repository pushing

    hint: to the same ref. You may want to firstintegrate the remote changes

    hint: (e.g., 'git pull ...') before pushing again.

    hint: See the 'Note about fast-forwards' in 'git push--help' for details.

    原因:远程文件(及GitHub上对应的仓库文件)包含了你本地没有的文件,你需要首先将远程文件同步到本地。

    解决方法:

    git pull--rebase origin master(同步远程文件到本地)

    先写这么多,关于github与Git,还有许多要我们注意学习的东西,以后慢慢完善吧。

  • 相关阅读:
    NET下RabbitMQ实践[WCF发布篇]
    基于Mongodb分布式存储物理文件
    NET下RabbitMQ实践[实战篇]
    关于Memcache mutex设计模式的.net实现
    使用ServiceStackRedis链接Redis简介
    NET下RabbitMQ实践[示例篇]
    基于MongoDB分布式存储进行MapReduce并行查询
    Asp.Net开发小技巧汇总
    愈敏洪讲座
    图标下载利器
  • 原文地址:https://www.cnblogs.com/lianghong/p/8493960.html
Copyright © 2011-2022 走看看