添加远程仓库(以GitHub为例)

  所谓的远程仓库,其实就和本地仓库一样,只是我们本地电脑可能会关机什么的。远程仓库的目的就是保证7*24小时开启状态。GitHub是一个很好的公共Git远程仓库(后面会介绍如何自己搭建一个Git服务器),在本笔记开始前请去https://github.com/官网免费注册一个账号。

  1.创建SSH KEY

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

$ ssh-keygen -t rsa -C "zuxingyu@gmail.com"

promote:~ zuxingyu$ cd .ssh
promote:.ssh zuxingyu$ ls
github_rsa github_rsa.pub id_rsa id_rsa.pub known_hosts

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

  2.添加SSH KEY

  登录GitHub,在自己的用户中心里添加SSH KEY

   点击Add SSH key后就能看到所自己添加的Key了。

   为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。

   当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。

如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。这个方法我们后面会讲到的,相当简单,公司内部开发必备。

确保你拥有一个GitHub账号后,我们就即将开始远程仓库的学习。

  创建远程仓库

  登录后GitHub后,进入https://github.com/new页面创建资源库:ServerManagementSystem

   创建完成后,我们得到了一个空的资源库。

  图中GitHub告诉有三种方法去添加库里的内容:1.可以在本地创建空文件夹作为版本库。2.选定一个本地存在的版本库。3.选择其他类型的版本库(如VCS等)

  将本地代码提交到远程仓库中

  在我本地有个项目需要放到这个远程资源库里,但是我本地没有资源库,所以我使用第一种方法来创建我的远程资源库。

  我们看下这里面的命令:

bogon:ServerManagementSystem zuxingyu$ echo "# ServerManagementSystem" >> README.md    // 添加README.md
bogon:ServerManagementSystem zuxingyu$ git add . // 将文件夹中的所有文件add进去
bogon:ServerManagementSystem zuxingyu$ git commit -m "设定框架" // commit到本地库
bogon:ServerManagementSystem zuxingyu$ git remote add origin https://github.com/zuxingyu/ServerManagementSystem.git // 将本地库与GitHub上的库进行关联
bogon:ServerManagementSystem zuxingyu$ git push -u origin master
Username for 'https://github.com': zuxingyu
Password for 'https://zuxingyu@github.com':
Counting objects: 277, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (264/264), done.
Writing objects: 100% (277/277), 3.90 MiB | 147.00 KiB/s, done.
Total 277 (delta 22), reused 0 (delta 0)
remote: Resolving deltas: 100% (22/22), done.
To https://github.com/zuxingyu/ServerManagementSystem.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.

  这样我们就能把我们上传的代码push到GitHub的那个远程库中了, git push origin master 意思就是把本地 master 分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!

  从远程仓库克隆

  在项目库中,复制SSH

  

promote:src zuxingyu$ git clone git@github.com:zuxingyu/ServerManagementSystem.git
Cloning into 'ServerManagementSystem'...
remote: Counting objects: 277, done.
remote: Compressing objects: 100% (242/242), done.
remote: Total 277 (delta 22), reused 277 (delta 22), pack-reused 0
Receiving objects: 100% (277/277), 3.90 MiB | 451.00 KiB/s, done.
Resolving deltas: 100% (22/22), done.
Checking connectivity... done.

  当然,你也可以使用HTTPS这种方式去克隆库。

分支管理

  分支就像火影忍者里鸣人的影分身之术一样,和本体没有区别,可以有很多个分身。当某一天分身都消失的时候,本体能够继承分身的所有记忆。

  分支就是这样,一旦合并了,各个分支的代码都会合到一起。

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

  Git的分支好处就是不像SVN那些版本控制工具,切换分支很慢。Git切换分支很快,基本做到了秒切。

 创建分支

git checkout -b dev // 创建并检出dev分支
// 上面命令是一个合并的命令。它可以划分为
git branch dev // 创建分支dev
git check out dev // 检出dev
promote:ServerManagementSystem zuxingyu$ git checkout -b dev
Switched to a new branch 'dev'

  如果你想列出所有分支那么可以使用 git branch 命令:

promote:ServerManagementSystem zuxingyu$ git branch
* dev
master
test

注:   *  号代表当前分支。

  提交的话我们就像之前那样正常提交就行了。但是这个提交只会提交到当前版本。

 合并分支

  我们把 dev 分支的工作成果合并到 master 分支上:

  使用 git merge dev 命令

 删除分支

  使用 git branch -d dev 命令

  建议先合并再进行删除。

  

Git学习笔记(二) 远程仓库及分支的更多相关文章

  1. Git学习笔记——搭建远程仓库

    有空再把笔记移上来 注意点:git remote add origin不是相对于所有git仓库,只相对于当前git仓库 心得:远程建立裸仓库,意味着我不应该直接操作远程仓库.如果我是管理员,我应该先p ...

  2. 【Git学习笔记】远程仓库

    第一种情景:本地初始化一个Git仓库后,接着又在github上创建了一个Git仓库,现在要让这两个仓库进行远程同步. 1. 关联本地仓库就和远程仓库  $ git remote add origin ...

  3. Git学习笔记四--远程仓库

    Git远程仓库 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上. 怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本 ...

  4. GIT学习笔记(3):分支管理

    GIT学习笔记(3):分支管理 何谓分支 GIT是如何存储数据的 GIT不是存储文件差异或者变化量,而是一系列文件的快照.在Git提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容 ...

  5. Git学习笔记 (二)

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

  6. git在本地向远程仓库创建分支

    在本地的仓库种,如果想给upstream创建新分支并关联,需要执行 git push -u/--set-upstream 远程仓库名 远程分支名

  7. Git学习笔记3-远程仓库

    1.添加远程仓库 $ git remote add [shortname] [url] $ git remote add origin https://github.com/Mike199201/Gi ...

  8. git学习笔记04-将本地仓库添加到GitHub远程仓库-git比svn先进的地方

    第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步. 如果没有,打开Shel ...

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

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

随机推荐

  1. ES6学习笔记(一)——Promise

    Promise 是 ES6 提供的一种异步编程的解决方案: 将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数(解决异步函数回调地狱的问题).Promise 对象保存着异步操作的结果. 首先 ...

  2. 【bzoj1911-[Apio2010]特别行动队】斜率优化

    [题目描述] 有n个数,分成连续的若干段,每段的分数为a*x^2+b*x+c(a,b,c是给出的常数),其中x为该段的各个数的和.求如何分才能使得各个段的分数的总和最大. [输入格式]  第1行:1个 ...

  3. [BZOJ2453]维护队列|分块

    Description 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到右编号为1到N.为了整个队列鲜艳美观,小朋友想知道某一段连续弹珠中,不同颜色的弹珠有多少.当然,A有时候会 ...

  4. linux基础 -nginx和nfs代理 开发脚本自动部署及监控

    开发脚本自动部署及监控 1.编写脚本自动部署反向代理.web.nfs: (1).部署nginx反向代理三个web服务,调度算法使用加权轮询:  (2).所有web服务使用共享存储nfs,保证所有web ...

  5. 最简单的DLL

    静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了.但是若使用 DLL,该 DLL 不必被包含在最终 EXE ...

  6. 汉字hash问题(转)

    一.汉字编码的种类 汉字编码中现在主要用到的有三类,包括GBK,GB2312和Big5. 1.GB2312又称国标码,由国家标准总局发布,1981年5月1日实施,通行于大陆.新加坡等地也使用此编码.它 ...

  7. 记一次学习SpringBoot RequestBodyAdvice ResponseBodyAdvice RestControllerAdvice

    今天老板给我了一套代码,然后我就拿过去研究,代码的风格是SSM + Shiro + nginx + SpringBoot的MVC架构风格,springboot,是当下很火的一个框架,配合springc ...

  8. sphinx-python文档化

    概述 下文讲述使用sphinx自动生成reStructuredText python API文档的简单过程. 配置流程 安装依赖 $ pip install sphinx blurb python-d ...

  9. python3的leetcode题,两个数求和等于目标值,返回这两个数的索引组成的列表(三种方法)

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为gai目标值的 两个 整数. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 ...

  10. 只有5行代码的算法——Floyd算法

    Floyd算法用于求一个带权有向图(Wighted Directed Graph)的任意两点距离的算法,运用了动态规划的思想,算法的时间复杂度为O(n^3).具体方法是:设点i到点j的距离为d[i][ ...