关于仓库,我们先搞清楚三个概念:本地仓库、远程仓库和上游仓库。本地仓库是从远程仓库clone出来的,远程仓库可以从上游仓库fork出来。这里的clone和fork都是复制的意思,区别是本地和远程都是针对自己的git账号,一对一映射;远程跟上游是针对不同的账号,是多对一的映射。上游仓库类似中心化的SVN服务器,每个分支都可以拉取分支,拿到别人的代码,自己修改后再提交上去。

  1、我们先登陆个人账号,进入想要一起玩的项目ExamDemo,点击Fork拉分叉到自己的git账号下面:

  2、点击Clone or download按钮,克隆个人的远程仓库url,到git bash下用命令行git clone执行克隆操作:

  

wulf@wulf00 MINGW64 /e/workspace
$ git clone https://github.com/wuxun1997/ExamDemo.git

  3、进入本地仓库目录,查看当前远程仓库:

wulf@wulf00 MINGW64 /e/workspace
$ cd ExamDemo/ wulf@wulf00 MINGW64 /e/workspace/ExamDemo (master)
$ git remote -v
origin https://github.com/wuxun1997/ExamDemo.git (fetch)
origin https://github.com/wuxun1997/ExamDemo.git (push)

  4、因为我们是从中心仓库中拉的分支,为了对中心仓库保持同步,需要设置我们的远程仓库与中心仓库的对接,这里中心仓库是我们的上游仓库:

wulf@wulf00 MINGW64 /e/workspace/ExamDemo (master)
$ git remote add upstream https://github.com/OwenTse/ExamDemo.git

  这里upstream只是一个别名,用来指代上游仓库。这时我们再看下远程仓库,会发现多了两个上游仓库了:

wulf@wulf00 MINGW64 /e/workspace/ExamDemo (master)
$ git remote -v
origin https://github.com/wuxun1997/ExamDemo.git (fetch)
origin https://github.com/wuxun1997/ExamDemo.git (push)
upstream https://github.com/OwenTse/ExamDemo.git (fetch)
upstream https://github.com/OwenTse/ExamDemo.git (push)

  5、接下来的3条命令用来保持本地仓库和上游仓库同步。首先从远程仓库检出最新分支(这里是master分支)到本地仓库:

wulf@wulf00 MINGW64 /e/workspace/ExamDemo (master)
$ git checkout master
Already on 'master'
M src/main/java/example/One.java
Your branch is up to date with 'origin/master'.

  我这里是改动了One.java文件,所以git提示我本地有修改(Modify)文件,但因为我并未提交,所以master依然是最新的。

  6、从上游仓库下载代码到本地仓库:

wulf@wulf00 MINGW64 /e/workspace/ExamDemo (master)
$ git fetch upstream
From https://github.com/OwenTse/ExamDemo
* [new branch] master -> upstream/master

  通过这个命令我们能把别人的最新代码拉取到本地仓库,假如团队里的张三提交了代码,那么这时我们就能取到他的最新代码,并在他的基础上继续开发。

  7、合并本地仓库代码到上游仓库

wulf@wulf00 MINGW64 /e/workspace/ExamDemo (master)
$ git merge upstream/master
Already up to date.

  这里是把本地仓库代码合并到上游仓库,这里提示上游仓库是最新的。

  8、推送本地仓库到远程仓库

wulf@wulf00 MINGW64 /e/workspace/ExamDemo (master)
$ git push origin master
Everything up-to-date

git仓库的更多相关文章

  1. 多本地代码工作点更新到2个远端GIT仓库

    摘要:本文介绍了笔者多个本地工作节点(地方)的多台电脑(PC/笔记本电脑)同步源码到2个远端的GIT(一个GITHUB国外强制公开,一个oschina国内可不公开). 作者:太初 转载说明:请指明原作 ...

  2. Git中如何利用生成SSH个人公钥访问git仓库

    Git中如何利用生成SSH个人公钥访问git仓库方法(这里以coding平台为例): 1. 获取 SSH 协议地址 在项目的代码页面点击 SSH 切换到 SSH 协议, 获得访问地址, 请使用这个地址 ...

  3. eclipse连接多个git仓库方法

    只需要在本地建立多个仓库就行,提交的时候一个本地仓库对应一个git仓库

  4. svn 版本迁移到 git 仓库

    1.拉取 svn代码并转成 git 版本 git svn fetch http://svn.qtz.com/svn/qtz_code/java/qtz_sm/project/qtz_sm -Auser ...

  5. git仓库的初始化

    关于git仓库的初始化和git push的操作 git init git remote add origin ssh://myserver.com/home/git/myapp.git git pul ...

  6. xcode 版本控制推送代码到远程git仓库的步骤

    一 代码推送到远程git仓库 1.在git中建立一个下项目(假设项目名称为->Mygit) 2.在xocde上新建一个测试项目(假设项目名称为GitTest) 3.打开电脑终端: 1)首先利用终 ...

  7. 【Git学习笔记】初始化Git仓库和版本回退

    学习地址 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 什么是版本库呢?版本库又 ...

  8. (转)如何将本地git仓库上传到GitHub中托管+实践心得

    Git——新手入门与上传项目到远程仓库GitHub(转) - Chen_s - 博客园http://www.cnblogs.com/Chenshuai7/p/5486278.html 注意的问题: 1 ...

  9. svn迁移到git仓库并保留commit历史记录

    svn迁移到git仓库并保留commit历史记录 最近在做svn迁移到gitlab,由于之前一直是由svn做版本控制.最简单的方式是将svn的内容export出来,然后添加到gitlab即可.但是,如 ...

  10. 如何在Linux下使用Gitblit工具创建Git仓库服务

    嗨!朋友,今天我们将学习如何在你的Linux服务器或者PC上安装Gitblit工具.首先,我们看看什么是Git,它的功能以及安装Gitblit的步骤.Git是分布式版本控制系统,它强调速度.数据一致性 ...

随机推荐

  1. linux下鼠标穿透和取消穿透--linux小白,大神无视

    最近在用qt写一个跨平台的软件,因为设置了无边框,并且我自己给程序窗口加了阴影,阴影范围又比较大 所以必须给阴影区域加上鼠标穿透才能有更好的体验. 上网查了一下,在windows下使用SetWindo ...

  2. Python 常用 PEP8 编码规范

    Python 常用 PEP8 编码规范 代码布局 缩进 每级缩进用4个空格. 括号中使用垂直隐式缩进或使用悬挂缩进. EXAMPLE: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  3. 【LeetCode 28_字符串_匹配】Implement strStr()

    解法一:Brute-force int strStr(string haystack, string needle) { int m = haystack.size(); int n = needle ...

  4. C++复制控制:赋值操作符和析构函数

    一.赋值操作符 类定义了该类型对象赋值时会发生什么.与拷贝构造函数一样,如果类没有定义自己的赋值操作符,编译器会合成一个. 1.重载操作符的简单介绍 重载操作符是一些函数,其名字为operator后跟 ...

  5. Python模块化

    在Python中,一个.py文件就称之为一个模块(Module). 模块化的好处: 1.大大提高了代码的可维护性. 2.编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用.我们在编写程序的 ...

  6. New Concept English three(21)

    27W 59 Boxing matches were very popular in England two hundred years ago. In those days, boxers foug ...

  7. Linux:declare命令详解

    declare declare命令用于声明和显示已存在的shell变量.当不提供变量名参数时显示所有shell变量.declare命令若不带任何参数选项,则会显示所有shell变量及其值.declar ...

  8. JS跨页面或跨JS文件对变量赋值

    JS跨页面或跨JS文件对变量赋值,这是很小的一个问题. 但问题虽小,却总觉得有点不够自然,不爽. 为什么呢?访问一个页面上的变量不是什么难事,比如用parent.变量名,或者windows名.变量名, ...

  9. 十图详解TensorFlow数据读取机制(附代码)

    在学习TensorFlow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找不到什么合适的学习材料.今天这篇文章就以图片的形式,用最简单的语言,为大家详细解释一下 ...

  10. 解决在django中应用keras模型时出现的ValueError("Tensor %s is not an element of this graph." % obj)问题

    用keras训练好模型,再在django初始化加载模型,这个过程没有问题,但是在调用到模型执行model.predict()的时候就报错: raise ValueError("Tensor ...