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常用的操作,包括提交和同步代码.使用分支.出现代码冲突的解决办法.紧急保存现场和恢复现场的操作.学会以后已经 ...
随机推荐
- 微信小程序--代码构成---WXSS 样式
WXSS 样式 WXSS 具有 CSS 大部分的特性,小程序在 WXSS 也做了一些扩充和修改. 新增了尺寸单位.在写 CSS 样式时,开发者需要考虑到手机设备的屏幕会有不同的宽度和设备像素比,采用一 ...
- 跨域 XMLHttpRequest对象
XMLHttpRequest对象是ajax编程的基础,用于发送请求(数据)与服务端进行交互. 目前主流浏览器都内置了XMLHttpRequest对象. 浏览器会使用XMLHttpRequest对象来创 ...
- SQLServer 表连接种类
SQLServer 有3种物理连接:Nested Loop(嵌套循环).Merge Join(合并联接).Hash Join(哈希联接). T-SQL中的inner/left/right/full j ...
- WebClient 支持 gzip, deflate
低调偷偷的下别人数据 发现下出来乱码- 用F12看看请求,原来人家是用了gzip压缩的- 试着自己加个Heading wc.Headers.Add("Accept-Encoding" ...
- js中slice splice substring substr区别
https://www.jb51.net/article/62165.htm 1.slice(start,end) # 字符串 2.splice (位置,删除个数,添加元素)# 针对arrary ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-5项目数据库操作封装操作-EF框架
EF框架有三种基本的方式:DB First(数据库优先),Model First(模型优先),Code First(代码优先). Entity Framework4.1之前EF支持“Database ...
- CSS3 鲜为人知的属性-webkit-tap-highlight-color的理解
(一)-webkit-tap-highlight-color 这个属性只用于iOS (iPhone和iPad).当你点击一个链接或者通过Javascript定义的可点击元素的时候,它就 ...
- jquery 计算两个日期相差的天数
<!DOCTYPE html> <html> <head> <meta charset = "utf-8"> <title&g ...
- BZOJ3944 Sum 数论 杜教筛
原文链接http://www.cnblogs.com/zhouzhendong/p/8671759.html 题目传送门 - BZOJ3944 题意 多组数据(组数<=10). 每组数据一个正整 ...
- Codeforces 1009G Allowed Letters FMT,二分图,二分图匹配,霍尔定理
原文链接https://www.cnblogs.com/zhouzhendong/p/CF1009G.html 题目传送门 - CF1009G 题意 给定一个长度为 $n$ 的字符串 $s$ .并给定 ...