GIt 和 Github
原创 by zoe.zhang
GitHub中采用的比较多得是markdown的语法,博客园里对markdown的支持感觉不是特别友好,但是为了应景,还是用了markdown来写这一篇文章。另外,题外话,后面有时间有精力希望学习去搭建一个个人的博客网站,漂亮,干净又有个性,感觉特别帅气。恩,跑题了,回来。
1.Git 和 GitHub的联系与区别
- git是一款免费的开源的分布式版本控制软件,是由Linux的开发者开发的,git的官网是 git 下载;
- github是一个网络开源代码分享社区,人们可以互相分享和讨论彼此的开源项目,在github上是基于git进行软件版本托管的。
- 在软件开发中,我们总是会不断改进或者修改代码,因此会衍生中各种不同的版本的代码,如果版本数量多,而管理不当,很容易造成管理的混乱。所以我们需要git来进行版本控制与管理。然后git主要可以对本地的项目进行管理,而在实际开发中,我们常常倾向于在本地和远程服务器各存放一份代码,同时需要一套机制使得本地和远程同步,此时我们就有了github,通过将本地git仓库和远程仓库进行关联,实现本地和远程的代码版本控制。当然github的功能不仅仅止于此,github上最重要的一个精神就是开源、分享和共同进步,github作为远程仓库只是它的一部分功能,更重要的是可以接触和学习到很多厉害人的源码。
2.GitHub的使用
- github的网址: github 官网
- 使用github的第一步当然是注册了,这一步很简单,如果不会,网上有很多教程,注册好了之后就可以开始你的github之旅了。一开始有一个hello world 教程,写得很好,只要花十分钟就可以弄明白github的基本用法,非常建议阅读。
总结下来使用github的基本步骤可以概括为:- 创建仓库:仓库中包含 anything your project needs,一般情况下建议包含一个README.md, 实际上也是一种使用规范,创建仓库后可以通过upload上传自己的文件,也可以通过自己的本地git上传工程文件。
- 创建分支:分支即分支版本,在做项目修改或者bug修正时,我们通常会创建一个与master主支一模一样的branch分支, 我们可以在分支中修改代码而不会影响到源码。
- 做出修改并提交修改:commit changes = save changes,每一次提交修改的时候建议添加上commit message,以帮助后续查看修改历史。
- Pull request:pull request一般是做出修改后,向原项目提出融合的申请。在自己的项目中,可以理解为在保证了修改的正确性后,对源项目做更新的操作。在别人的项目中,一般是fork了别人的项目后,发现了bug或者功能上的改善等,向原作者原项目提出pull request,由原作者或者其他感兴趣的人讨论并决定是否merge 进自己的项目中。 pull request 会显示两个分支的不同所在,用于比较和方便查阅。Create pull request 时也需要添加request 说明。
- Merge pull request:确认修改 并confirm merge,如果多余的branch不需要了,可以删除多余的branch。
- github的功能不仅仅止于此,这里还有一些小tips:
- Repository:一个Repository就是一个代码仓库,里面通常放了一个项目。对于我等目前默默无闻的小菜鸟,可以将github作为一个易管理的代码仓储,日后浏览或者取用都很方便。
- Star: 给别人的项目点赞加星,实际上可以看成是一种收藏方式。
- fork: fork别人的开源项目,相当于将别人的项目源码copy到你的github仓库,创建了一个你可以在此基础上改进或者应用的分支。
- watch: 关注,watch了这个项目,表示你非常关注这个开源项目的更新动态,项目的讨论和更新都会第一时间通知到你。
- explore:explorer非常好用,你可以搜索相关的开源项目,也可以看showcase中很多大公司和典型的开源项目,还有trending中最近很热门的项目,帮助你了解技术前沿的动态。
- Gist: 分享代码判断类似于论坛性质的地方,国内好像有时候被墙了。
3. Git 的使用
在进行git操作之前,需要切换到Git仓库目录,也就是切换到项目的文件夹目录下。存在一个本地仓库的文件夹目录下会有一个 .git 的文件夹,里面记录了相关信息。
Git 常用的命令可分为几类:(git 命令都需要以git为开头)
- start working area: 建立本地仓库的工作去,如: clone init
- work on current change: 最常用的 add 和 reset 还有 rm
- examine the history and state: 常用的 log 和 status
- grow,Mark and tweak common history: 常用的branch、checkout ,commit、diff、merge
- collaboration: fetch、pull、push
git init: 进入一个从未创建仓库的工程文件夹,初始化并创建仓库,生成.git 隐藏文件夹,用于记录本地的所有git操作。
git status: 查看 仓库状态,untracked files 是指文件尚未被跟踪,尚未提交到git仓库中,这个时候可以使用git add 添加要提交到仓库的文件。
git add : 提交单个文件 git add xxx.file ; 提交目录下全部文件 git add -A;(注意大写) 此时提示Index列表中有两个待提交的new file
git commit -m 'first commit' : 提交文件,一定要通过-m参数添加提交的描述信息,没有描述的提交是不合法的。
git branch: 查看仓库中的分支情况与当前所在分支; git branch newbranch :创建新的分支;
git checkout newbranch :切换到新分支; git checkout -b new:创建一个新分支并切换到新分支上
git branch -d new:删除分支,注意不能删除当前所在的分支git merge newbranch: 融合或者说更新分支到主干上
注意:Git Windows 安装后会有三个程序:git bash ,git cmd,和git gui,建议使用git bash,基于MINGW64,添加了几个实用的Linux命令,以及git自己的命令。建议一开始就使用命令行来操作。
4.Git与GitHub的联系:上传本地文件到GitHub
本地仓库与远程仓库联系起来,本地可以向github提交代码,一般来说github上都是基于SSH授权的。SSH是什么就不多说了,建议自己去百度了解一下。
- SSH与SSHkey
- 第一次生成SSHkey: 在git bash中输入: ssh-keygen -t rsa 或者 ssh-keygen –t rsa –C “xxxxxj@gmail.com”
- 已有SSHkey,查看SSHkey:
Linux用户:执行 cd ~/.ssh cat id_rsa.pub;
windows 用户:C:\Users\Administrator.ssh 找到id_rsa.pub文件,用Notepad或者Editpuls打开复制即可。
Github SSH授权
在github中添加SSH key,在 New SSH key 中 将id_rsa.pub公钥中的内容复制粘贴进去就好。在gitbash中输入 ssh -T git@github.com,显示如图所示则链接成功。
- 远程提交代码
第一次连接远程仓库的时候,需要语句 git remote add orgin 远程仓库SSH地址,不然没办法push和pull,这里我们将远程仓库命名为orgin,我们通常都命名为orgin,如果存在多个仓库,也可起别的名字。
pull 和push:在push之前最好pull 一下,否则容易导致警告或者失败。
5. 附1:知乎:git怎么在仓库里面上传一个文件夹到github
- git 基本命令
- cd: 进入目录
- git init:当前目录初始化为git可以管理的仓库
- git add readme.md: 添加单个文件; git add -A: 添加全部文件
- git commit -m "commit 备注":提交修改
- git status: 查看git 管理状态与提交情况(最常用的命令)
- git log: 查看最近日志
- git reset -hard HEAD^ : 版本回退一个; git reset -hard HEAD^^:版本回退两个;git reset -hard HEAD~100:回退多个;
- git 连接github
- 第一次远程仓库与本地仓库的连接和提交: git remote add origin git地址
- 仓库关联和默认提交: git push -u origin master
- 第二次远程仓库的提交:git push
- 远程提交的一些使用小技巧
- git clone 远程仓库地址: 该命令将项目文件从远程仓库获取到本地,并自动创建了git本地仓库,而且已经关联好了远程仓库,可以直接使用 git push orgin master(想要提交的分支)
- git push -u orgin master:设置push 的default操作,后面可以直接使用 git push,不用显式指定推送的分支名。
- git fetch orgin: 本地已经存在项目,获取远程的更新; git merge orgin/master:将更新融合到本地分支master。
GIt 和 Github的更多相关文章
- 简单使用Git和Github来管理自己的代码和读书笔记
原文链接:http://my.oschina.net/bxxfighting/blog/378196 先注册github.com的账号官方网站: https://github.com/ 注册界面, ...
- git for windows 的默认工作路径(HOME)的设置以及Git与GitHub之间的SSH加密协议
1.安装及配置默认路径 Windows中从GitHub上面:https://git-for-windows.github.io/ 下载安装好git后(双击,改一下需要的安装路径,一路确定就好了),安装 ...
- git与github安装、配置、pull、push
操作系统是Ubuntu 16.04 LTS 64bit 1 安装git (1)安装 sudo apt-get install git-core (2)一些全局变量的初始化 在本地建立一个文件夹,然后做 ...
- 转:sublime上使用git连接github
"工欲善其事,必先利其器." 这是古人的教诲,也是一个高效率的工程师需要遵循的法则之一.从大学开始写Java使用了JBuilder,Eclipse,后来写PHP用了Zend,写Ja ...
- git与github使用
Git和Github简单教程 目录: 零.Git是什么 一.Git的主要功能:版本控制 二.概览 三.Git for Windows软件安装 四.本地Git的使用 五.Github与Git的关联 六. ...
- linux下git以及github的连接与使用
简单理解 Git 的思想和基本的工作原理,能够更好的进一步和使用Git.在开始学习Git 的时候,最好不要把Git的各种概念和其他的版本控制系统诸如 Subversion 等相比,否则容易混淆每个操作 ...
- Git和Github简单教程
原文链接:Git和Github简单教程 网络上关于Git和GitHub的教程不少,但是这些教程有的命令太少不够用,有的命令太多,使得初期学习的时候需要额外花不少时间在一些当前用不到的命令上. 这篇文章 ...
- Git和Github简单教程(转)
这篇文章只挑一部分命令来讲,差不多够用就行的程度.如果需要其他命令,到时候再去其他地方了解就行了先在Github上写好再搬过来的:本文Github链接 目录: 零.Git是什么 一.Git的主要功能: ...
- WebStorm和sublime上使用git连接github(转)
WebStorm使用git连接github的方法: 用webstorm上传代码时,首先要先下载git,网址一搜就可以搜到,安装git,并且把ssh配置到github上.然后开始配置webstorm,打 ...
- git和github使用方式
git 和github github是远程管理代码的服务器的名称 git代码管理系统 (git既然是一个系统,所以说git也有一些命令) git操作过程 首先在本地建立一个仓库,用来把代码提交到git ...
随机推荐
- 机器学习 (三) 逻辑回归 Logistic Regression
文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...
- cocos2d-x 显示中文字符和解析XML文件 转载
源地址:http://codingnow.cn/cocos2d-x/1038.html 在cocos2d-x中直接显示中文的时候会出现乱码,虽然在实际开发中把字符串直接写在代码里也不是好的做法,但是有 ...
- 使用HashOperations操作redis
方法 c参数 s说明 Long delete(H key, Object... hashKeys); H key:集合key Object... hashKeys:key对应hashkey 删除ma ...
- spring环境搭建(简单实例)
1使用Maven导入需要的依赖(在project标签下) <properties> <spring_version>3.2.2.RELEASE</spring_versi ...
- php实现base64图片上传方式实例代码
<?php /** * base64图片上传 * @param $base64_img * @return array */ header("content-type:text/htm ...
- 怎么获取textarea中选中文字
textarea设置select="saveSelectionText()" //保存选中内容 saveSelectionText: function () { var focus ...
- [Leetcode] Unique binary search trees ii 唯一二叉搜索树
Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For e ...
- [zhuan]Android安全讲座第九层(二) 内存dump
http://sunzeduo.blog.51cto.com/2758509/1409450 近来android上越来越多的应用对自身的保护机制加强了重视,主要表现在几个方面. 1 dex加壳 2 s ...
- Vue根据URL传参来控制全局 console.log 的开关
如果你的项目中console.log了很多信息,但是发到生产环境上又不想打印这些信息,这时候就需要设置一个全局变量,如:debug, 用正则匹配一下参数: const getQueryStr = (n ...
- gcc用法小记
By francis_hao Feb 13,2017 概要 这里只列出了最常用的选项 选项解释 -c|-S|-E 启动gcc编译器时,它会顺序执行预处理.编译.汇编和连接(四个阶段的详细介绍 ...