一、创建远程仓库(GitHub)

1.GitHub网站地址:https://github.com/,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。

2.由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要如下设置:

第1步:创建SSH Key。在用户主目录下(例如:C:\Users\Administrator\),看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

$ ssh-keygen -t rsa -C "wheeky@163.com"

你需要把邮件地址换成你自己的邮件地址,然后一路回车,全部使用默认值即可;

如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面,然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,最后点击“Add Key”按钮完成。

说明:为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

二、添加远程库

1.登录GitHub网站,并按网站要求创建一个新的仓库;

2.根据GitHub网站提示,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

3.本地仓库与GitHub上相应的仓库建立关联,代码如下:(git@github.com:wheeky/ZControls.git为我新建的仓库路径)

$ git remote add origin git@github.com:wheeky/ZControls.git

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

4.把本地库的内容推送到远程库上,用git push命令,实际是把当前分支master推送到远程。

$ git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令(不用带-u参数)。

当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告,这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

5.通过GitHub上的仓库来克隆出新的本地仓库,代码如下:(克隆出新的本地仓库文件夹为:ZControls)

$ git clone git@github.com:wheeky/ZControls.git

Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议,使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https

三、分支管理

1.分支的作用:创建一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

2.创建分支(dev):

$ git checkout -b dev //git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev

git branch命令查看当前分支,git branch命令会列出所有分支,当前分支前面会标一个*号。

用git checkout命令切换分支,如下代码,切换到master分支:

$ git checkout master

3.合并分支:(用git merge命令合并指定分支到当前分支)

$ git merge dev //默认启用Fast forward模式,若合并后再删除分支,则删除分支后,会丢掉分支信息
$ git merge --no-ff -m "merge with no-ff" dev //使用--no-ff参数,表示禁用Fast forward模式,Git就会在合并时生成一个新的commit,这样,从分支历史上就可以看出分支信息。  

4.删除分支:

$ git branch -d dev //若需要强制删除,则-d参数应改变为大写,如:git branch -D dev

5.查看分支合并情况:

git log --graph

6.临时隐藏工作区:(常见的场景是,当我们需要临时处理其它事情【如:解决BUG】时而不得不暂时中断目前的主要开发任务)

$ git stash //隐藏目前工作区
$ git checkout master //切换到需要建立临时分支的分支,比如:master
$ git checkout -b issue-101 //建立并切换到临时分支,issue-101
$ git add file //添加到暂存区
$ git commit -m "fix bug 101" //提交到临时分支仓库
$ git checkout master //回到master分支
$ git merge --no-ff -m "merged bug fix 101" issue-101 //合并临时分支,这里禁用fast foward模式,保留提交记录以便日后可查或恢复
$ git branch -d issue-101 //删除临时分支

查看被隐藏的工作区信息:

$ git stash list

恢复工作区:

$ git stash pop //相当于以下两条命令
$ git stash apply //恢复工作区
$ git stash drop //清除隐藏区

7.查看远程库:

$ git remote
$ git remote -v //加上-v参数可以查看详细信息

8.推送分支到远程库分支:

$ git push origin 分支名

9.创建本地分支并关联远程分支:

$ git checkout -b 分支名 origin/分支名 //origin/dev为远程分支路径
$ git branch --set-upstream 分支名 origin/分支名 //若本地已有分支,可通过该命令来关联远程分支

10.解决冲突:

  10.1若是本地多分支之前合并产生冲突,可以先用git status命令查看原因,并依据提示修改相应的文件后,再重试即可;

  10.2若是多人协作,向远程推送提交时产生冲突,则需先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送,如下:

$ git pull //从远程获取分支
$ git commit -m "marge files" //本地更新合并
$ git push origin dev //推送提交到远程分支

Git学习笔记(二)的更多相关文章

  1. Git学习笔记 (二)

    Git学习笔记(二) 突然发现,学习新知识新技能,都得经常温故使用,这样才能日益精进.最近学习的Git是因为加入了课题组,在学习做一些后台,由于后台开发会牵扯到多人开发,所以学会Git这一代码管理工具 ...

  2. Git学习笔记(二) 远程仓库及分支

    添加远程仓库(以GitHub为例) 所谓的远程仓库,其实就和本地仓库一样,只是我们本地电脑可能会关机什么的.远程仓库的目的就是保证7*24小时开启状态.GitHub是一个很好的公共Git远程仓库(后面 ...

  3. git学习笔记二-branch分支

    1.刚创建好的空仓库的分支是空的,即使是master分支也是不存在的.master分支是不能通过git branch 来创建的,只有在完成第一次提交才会自动创建,有git自动完成master分子的创建 ...

  4. Git学习笔记二--工作区和暂存区

    Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 简单理解: 我们使用mkdir Git在d盘下创建的文件夹,就是工作区,我们编辑readme.txt文件就是在工作区下完成的: gi ...

  5. Git学习笔记(二) · 非典型性程序猿

    远程库的使用 前面说到的都是git在本地的操作,那么实际协作开发过程中我们肯定是要有一个远程版本库作为项目的核心版本库,也就是投入生产使用的版本.这里我们以 Github为例.Github是一个开放的 ...

  6. Git学习笔记与IntelliJ IDEA整合

    Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...

  7. Git学习笔记(四)

    一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...

  8. [转]Git学习笔记与IntelliJ IDEA整合

    Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...

  9. Git学习笔记(10)——搭建Git服务器

    本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...

  10. git 学习笔记6--remote & log

    git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...

随机推荐

  1. file /usr/share/mysql/... conflicts with file from package mysql-libs-5.1.73-3.el6_5.x86_ 64 MySQL安装

    在CentOS 6.5安装MySQL 5.6.17,安装到最后一个rpm文件MySQL-server时 安装命令是:rpm -ivh MySQL-server-5.6.17-1.el6.x86_64. ...

  2. React Native移动框架功能研究

    React Native移动框架功能研究 此篇只研究React Native框架的功能. 一.React Natvie是什么 React Native是使用React(或者说JS)来开发原生APP的框 ...

  3. C#动态调用WCF

    public class WcfChannelFactory { public WcfChannelFactory() { } /// <summary> /// 执行方法 WSHttpB ...

  4. 【腾讯Bugly干货分享】从0到1打造直播 App

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5811d42e7fd6ec467453bf58 作者:李智文 概要 分享内容: ...

  5. Nim教程【十四】

    网友@沉没捕鱼,赞助了一台服务器 这个系列的教程写完之后,我们就要开始着手搭建Nim的社区了~ 异常 Nim中的异常类型是对象类型 根据惯例,Nim中的异常类型的命名都应该以Error后缀结尾 在sy ...

  6. C# 对包含文件或目录路径信息的 System.String 实例执行操作

    在字符串操作中有一类比较特殊的操作,就是对包含文件或目录路径信息的 System.String 实例执行操作.比如根据一个表示路径的字符串获取其代表的文件名称.文件夹路径.文件扩展名等.在很多时候,我 ...

  7. Java基础之打印万年历

          今天刚开的博客,第一篇博文,一篇关于Java基础的内容,水平有限,多多见谅,希望和大家在学习编程的路上共同进步. 问题:输入年,月,打印对应年月的日历.   示例: ----------- ...

  8. Memcache分布式部署方案

    基础环境 其实基于PHP扩展的Memcache客户端实际上早已经实现,而且非常稳定.先解释一些名词,Memcache是danga.com的一个开源项目,可以类比于MySQL这样的服务,而PHP扩展的M ...

  9. lua使用io.open跨平台文件夹遍历匹配查找

    -- Desc :实现在LUA_PATH中的lua文件中遍历寻找没用到PNG_PATH路径下的png图片,并将其打印出来. -- Date :12:49:28 2014-09-04 1 print(& ...

  10. salesforce 零基础学习(四十二)简单文件上传下载

    项目中,常常需要用到文件的上传和下载,上传和下载功能实际上是对Document对象进行insert和查询操作.本篇演示简单的文件上传和下载,理论上文件上传后应该将ID作为操作表的字段存储,这里只演示文 ...