• Git——常用场景解析


    总结:本篇文章从初识GitHub、Git,实践GitHub的五种常用场景,分别是:git for windows安装,git配置,克隆远程代码到本地,上传本地代码到远程以及Git的常用指令。相信James已经尝到了Git的滋味。

    Git是什么?是版本控制工具,是协同开发的利器。

    “版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统;对于软件开发领域来说,版本控制是最重要的一环。”

    如何使用呢?首次接触Git时,James认为:大可不必去弄清楚Git的工作原理,只需要熟练掌握Git的几种应用场景即可。

    其实James最先了解的是github。一些高端的开源项目都会发布到该平台,James很期待自己也能有所贡献和提高。提到github,主要提供基于git的版本托管服务平台(也就是远程端);Github上托管的所有项目代码都是基于Git来进行版本控制的,但Github的功能远不止于此(其他作用:以公开的方式存放文件,若隐私则需要收费;营销自己---博客或者简历存放等等)。因此,为了将github上的开源代码“克隆”到本地(即:James的电脑),需先在github上注册账号。

    场景一:git for windows的安装

    从标题即可看出,James使用的开发平台是Windows(具体是:Windows 7;James手上还没有什么银子!经过了半年工作,手上还是没多少钱...)。

    git for windows下载:https://git-scm.com/ Windows平台下的最新版本是2.9.0 更新时间:2016/06/13。

    相信大伙都精通软件安装,James也一样,一路next即可。

    场景二:git相关配置

    James暂时还不清楚为什么需要进行配置,但他会baidu和goole。

    首当其冲的是:密钥

    $ cd ~/.ssh  含义:切换目录到.ssh;~表示根目录,C:UserJames.ssh

    没错,James就是使用命令行来进行操作的;James是处女座,内心深处有强烈的危机感(需要搞清楚每一步骤的具体含义和结果)。希望你也喜欢使用命令行!

    如果提示:No such file or directory,说明是第一次使用git;也就是还没有生成相应的密钥;如果已经有文件,还会涉及到清理密钥的代码指令。

    ssh-keygen -t rsa -C "zfengwust3054@163.com" // 填写注册github时的email

    一直回车即可(中途会提示设置passphrase,暂时忽略吧),此时就会生成:C:UsersJames.ssh目录,新增两个文件:id_rsa和id_rsa.pub。

    其次,需要本地生成的密钥提供给github(James认为,是一种访问匹配的过程)。

    登录github,点击James的图片,点击Setting栏,找到SSH and GPG keys,点击new SSH key,将本地的生成的id_rsa.pub内容复制到key的部分中,执行Add SSH key即可。

    经过以上多个步骤,James还需要测试密钥。

    $ ssh -T git@github.com

    如果提示以下内容时,输入yes即可。

    The authenticity of host 'github.com (192.30.252.129)' can't be established.
    RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
    Are you sure you want to continue connecting (yes/no)? yes

    这个时候就会出现令James欣喜的文字:

    Hi ZHANGfeng-james! You've successfully authenticated, but GitHub does not provide shell access.

    最后,还需要设置用户信息(不过James还不知道其中的缘由)

    $ git config --global user.name "ZHANGfeng-james" // 填写github用户名
    $ git config --global user.email "zfengwust3054@163.com" // 填写github注册时的email

    场景三:克隆远程代码到本地

    James尝试读懂开源框架的源代码,就以xUtils为例(最新的是xUtils3)吧!Search到“星星”数最多的那个xUtils,然后fork即可,相当于复制了一份源代码到自己的仓库中(新建了一个同名的仓库)。

    步骤一:在本地新建和仓库名同名的文件目录

    $ mkdir ~/xUtils

    Linux的常用命令:新建文件夹——mkdir,James相信具有互联网思维的你,知道如何找到这些常用命令。

    步骤二:进入到该文件目录,进行清理操作(为什么要清理?)

    $ cd ~/xUtils
    $ git init

    可以看到提示信息:

    Initialized empty Git repository in C:/Users/James/xUtils/.git/

    步骤三:执行拷贝

    $ git clone https://github.com/ZHANGfeng-james/xUtils.git

    进入到你fork的仓库中,拷贝浏览器中的地址:https://github.com/ZHANGfeng-james/xUtils,并在其后添上.git即可。此外还有另外中方式:

    $ git clone git@github:ZHANGfeng-james.com/xUtils.git

    均可实现代码拷贝。

    Cloning into 'xUtils'...
    remote: Counting objects: 7582, done.
    remote: Total 7582 (delta 0), reused 0 (delta 0), pack-reused 7582
    Receiving objects: 100% (7582/7582), 15.49 MiB | 19.00 KiB/s, done.
    Resolving deltas: 100% (3242/3242), done.
    Checking connectivity... done.

    看到以上信息,就说明已经将远程代码拷贝到本地了。

    James成功了。

    场景四:上传本地代码到远程

    上传本地代码到远程(即github),是很常见的应用场景,James认为这个必须会。

    首先在github上新建UploadDemo仓库(很显然,James觉得这是很基础的操作)。

    其次在Git Bash中切换到本地项目(此时我新建项目文件:UploadDemo)的根目录,即类似于:C:UsersJamesUploadDemo目录,执行以下代码:

    $ git init

    将本地项目中的所有文件添加到仓库中,即需执行以下代码:

    $ git add .

    其中上述的:. ,代表的是项目根目录下的所有文件。但为什么会出现以下警告信息:

    warning: LF will be replaced by CRLF in Picasso_project2/.gitignore.

    James并不是很清楚。出现了很多文件信息,可能预示遍历了目录下的所有文件…

    将add的文件commit到仓库中:

    $ git commit -m "Picasso_project2" // 其中"Picasso_project2"是注释部分

    最后,将本地仓库关联到github上:

    $ git remote add origin git@github.com:ZHANGfeng-james/UploadDemo.git // 其后是github上对应项目的仓库地址

    但此时出现以下错误:

    fatal: remote origin already exists.

    但这难不倒James,因为有baidu和google呀!

    $ git pull origin master

    James发现上述执行的代码中有关键线索:origin和master,而master恰好是github仓库的主分支。但此时James仍不知道为什么。

    而后执行代码上传逻辑:

    $ git push -u origin master

    中途还弹出对话框,让James提供github的账号和密码。

    此时,就完成了本地代码上传的功能:

    111

    场景四:Git Bash常用指令

    git status // 查看当前仓库状态

    该指令是最最常用的操作,相当于对之前的操作进行状态查询。

    git init // 初始化当前路径所在的仓库

    如果在本地新建了文件目录,但在Git看来还不是一个代码仓库,需要进行初始化,也就是需要用到上述指令。执行“git init”指令后,默认会生成一个主分支master,是实际开发正式环境下的分支,一般情况下不会在master分支中改动代码。

    git add filename.txt // 添加filename.txt文件到缓冲区

    该指令现将仓库的改动添加到Git的暂存区,临时保存改动。

    git commit -m 'filename.txt commit'

    该指令将暂存区的改动提交到仓库,也就是仓库记录了此次改动;其后的-m表示提交的信息:filename.txt commit。

    git log // 输出commit记录
    输出所有提交的commit。
    git branch branchname // 新建branchname分支

    分支branch的概念应用在团队协作上,个人工作在自己不同的分支branch上,对master分支不造成破坏且相互之间也不影响。

    git branch // 查看仓库所有分支

    输出结果中,有前置*的为当前所在分支,也就是说接下来的改动将会在该分支上进行,不会影响其他分支。

    git checkout branchname // 切换到branchname分支

    在切换之后的分支上进行操作。

    git checkout -b branchname // 新建并切换到指定分支

    该指令为以上两个指令的复合。

    git branch -d branchname // 删除branchname分支

    有新建分支指令,同样也有删除分支的指令。

    git tag tag_content // 为当前代码设置标签

    这篇文章写到这,后续还有更加深入的问题等待着James(前面好像还有问题没有解决哦!James童鞋没有忘记)

  • 相关阅读:
    MySql概念(二)
    MySql数据库概念
    python并发编程之多进程
    python之进程与线程
    python之udp协议的套接字
    python之socket编程
    python之异常处理
    python之面向对象的高级进阶
    react中使用orgchart组织结构插件
    【react从入门到放弃】ant design pro + dva [第一篇]
  • 原文地址:https://www.cnblogs.com/CVstyle/p/5593684.html
Copyright © 2020-2023  润新知