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:\User\James\.ssh
没错,James就是使用命令行来进行操作的;James是处女座,内心深处有强烈的危机感(需要搞清楚每一步骤的具体含义和结果)。希望你也喜欢使用命令行!
如果提示:No such file or directory,说明是第一次使用git;也就是还没有生成相应的密钥;如果已经有文件,还会涉及到清理密钥的代码指令。
ssh-keygen -t rsa -C "zfengwust3054@163.com" // 填写注册github时的email
一直回车即可(中途会提示设置passphrase,暂时忽略吧),此时就会生成:C:\Users\James\.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: , done.
remote: Total (delta ), reused (delta ), pack-reused
Receiving objects: % (/), 15.49 MiB | 19.00 KiB/s, done.
Resolving deltas: % (/), done.
Checking connectivity... done.
看到以上信息,就说明已经将远程代码拷贝到本地了。
James成功了。
场景四:上传本地代码到远程
上传本地代码到远程(即github),是很常见的应用场景,James认为这个必须会。
首先在github上新建UploadDemo仓库(很显然,James觉得这是很基础的操作)。
其次在Git Bash中切换到本地项目(此时我新建项目文件:UploadDemo)的根目录,即类似于:C:\Users\James\UploadDemo目录,执行以下代码:
$ 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的账号和密码。
此时,就完成了本地代码上传的功能:
场景四: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童鞋没有忘记)
Git——常用场景解析的更多相关文章
- Git 常用场景操作
git init 在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹. git clone 获取一个u ...
- sublime 集成git插件,及git常用命令
以前用了很久的totoiseSVN,显然不够高大上,开发界的版本装x利器还得是git.然而git的命令行对没怎么用过linux的人可能觉得还不如用gitGUI,可是当你知道sublime可以集成git ...
- git常用命令常用场景
在使用git之前,一直用的是svn版本管理:与svn最大不同的是,git有两个仓库,一个是本地仓库,一个是服务器上共享的仓库:本地仓库是每个开发者自己独有的,即使commit提交也只是提交到本地仓库: ...
- Git使用的常用场景
场景一 小张作为一个开发人员,刚进团队,发现团队是使用git进行代码管理的,现在需要去初始化团队的代码仓库以及新增提交自己修改的一部分代码 1.克隆远程仓库 git clone <ssh> ...
- 实践中的Git常用指令分析
从工作开始,一直都在使用为知笔记(作为程序员需要知道的内容很多---不需要很深入理解,一段时不使用的东西可能就会忘记).但本周一同步不同PC端时,了解到为知会在2017/1/1开始收费! 既然收费了, ...
- 最全面 Nginx 入门教程 + 常用配置解析
转自 http://blog.csdn.net/shootyou/article/details/6093562 Nginx介绍和安装 一个简单的配置文件 模块介绍 常用场景配置 进阶内容 参考资料 ...
- Git常用命令清单笔记
git github 小弟调调 2015年01月12日发布 赞 | 6收藏 | 45 5k 次浏览 这里是我的笔记,记录一些git常用和一些记不住的命令,这个笔记原本是基于 颜海镜的文章增加 ...
- MQ(消息队列)常见的应用场景解析
前言 提高系统性能首先考虑的是数据库的优化,之前一篇文章<数据库的使用你可能忽略了这些>中有提到过开发中,针对数据库需要注意的事项.但是数据库因为历史原因,横向扩展是一件非常复杂的工程,所 ...
- 版本控制工具——Git常用操作(下)
本文由云+社区发表 作者:工程师小熊 摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码.使用分支.出现代码冲突的解决办法.紧急保存现场和恢复现场的操作.学会以后已经 ...
随机推荐
- IDEA加载项目的设置是tomcat
- gulp构建自动化项目
'use strict'; var gulp = require('gulp'), browserSync = require('browser-sync').create(), SSI = requ ...
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件. 在Spring Cloud中,有分布式配置中心组件spring cloud confi ...
- SQLServer锁的基础问题探究
SqlServer需要在执行操作前对目标资源获取所有权,那么久发生锁定,是一个逻辑概念.为了保证事务的ACID特性设计的一种机制. 在多用户并发操作数据时,为了出现不一致的数据,锁定是必须的机制.使用 ...
- 关于The specified Android SDK Build Tools version (26.0.2) is ignored, as it is below the minimum...
今天将项目迁移到另一台笔记本,进行build出现以下问题,导致build失败 The specified Android SDK Build Tools version (26.0.2) is ign ...
- Caused by: java.net.ConnectException: Connection refused: master/192.168.3.129:7077
1:启动Spark Shell,spark-shell是Spark自带的交互式Shell程序,方便用户进行交互式编程,用户可以在该命令行下用scala编写spark程序. 启动Spark Shell, ...
- MVC异常处理(异常捕获)
1.cshtml页面异常 2.Controller异常 3.路由参数异常. 4.页面不存在404 页面不存在404,可以通过配置config来处理 <customErrors mode=&quo ...
- error C1128: 节数超过对象文件格式限制: 请使用 /bigobj 进行编译
VS2015出现如上错误. 默认情况下,对象文件最多可存放 65,536 (2^16) 个可寻址的节. 这种情况不管指定哪个目标平台. /bigobj 可将该地址容量增加至 4,294,967,296 ...
- ftp弱密码案例
- kudu的写数据流程
写入操作是指需进行插入.更新或删除操作的一组行.需要注意的事项是Kudu强制执行主关键字的唯一性,主关键字是可以更改行的唯一标识符.为了强制执行此约束条件,Kudu必须以不同的方式处理插入和更新操作, ...