Git很火。原因有三:

  1. 它是大神Linus Torvalds的作品,天然地具备神二代的气质和品质;
  2. 促进了生产力的发展,Git的分布式版本控制理念,并非首创,但非常适合开源社区的协作方式(不存在master-slave的关系)
  3. GitHub

GitHub很好,号称代码界的facebook.

facebook,twitter,Microsoft,vmware,redhat,LinkedIn,Yahoo等公司都在GitHub上有建立数目不等的repositories。一些知名开源项目,例如jQuery, Ruby on Rails,node.js都把src code寄存于GitHub上。GitHub太成功了,以至于使很多人产生误解,以为git就是GitHub,使用git就必须连接GitHub。事实上,GitHub只是一个提供git repository hosting服务的网站。

本文试图讲解如何在U盘上创建git repository(使U盘成为你的私有代码云);以及如何在不同客户端进行同步作业。把git repository建在USB盘上能满足多种应用场景,特别是:

  1. 注重私密性(GitHub上普通账号不能创建私有repository)
  2. 网速很慢,甚至断网的时候需要同步

但不适合需要强collaborate的项目。

前提条件

先把git给装好了…然后…我们有了两台git ready的电脑,和一个U盘。

开始,1,初始化本地repository

假设有一个存在的项目,需要由git接管版本控制,那么来到这个%projct_home%目录(例如我的git_sandbox)下

step 1.1

初始化

$ git init git_sandbox

step 1.2

创建.gitignore文件(在%project_home%下,只对这个project有效),排除路径下不需用被提交到repository中的文件(例如.svn,.class, Thumbs.db…)

step 1.3

查看当前文件状态,可以看到有一堆”untracked files”

$ git status

step 1.4

把所有”untracked files”加入索引

$ git add .

step 1.5

提交到repository

$ git commit -m "initialized."

2, 搞到U盘上去

step 2.1

插上U盘,查看U盘挂载路径

$ mount

我的路径是”/Volumes/KINGSTON”

step 2.2

在U盘上创建一个repository,

$ mkdir /Volumes/KINGSTON/workspace/usbGitSpace/gitusb_sandbox

$ cd /Volumes/KINGSTON/workspace/usbGitSpace/gitusb_sandbox

$ git init --bare

使用–bare选项创建的repository被称作bare repository,它不会包含working目录(只包含.git目录下的内容),所以不适合在上面改code。bare repository主要的作用就是被push和pull。根据GitFaq的说法:

A quick rule of thumb is to never push into a repository that has a work tree attached to it, until you know what you are doing.

step 2.3

回到本地%project_home%,把初始化后的usb repository添加为remote repository

$ git remote add usb /Volumes/KINGSTON/workspace/usbGitSpace/gitusb_sandbox

将本地的repository push到usb上

$ git push usb master

3, 同步到另一台电脑

step 3.1

在另一台电脑上先创建一个本地repository

$ cd ~/my_gitspace/sandbox_win

$ git init

step 3.2

把U盘插到这个电脑上,查看当前挂载的路径,添加U盘作为当前repository的remote repository

$ git remote add usb /cygdrive/f/workspace/usbGitSpace/gitusb_sandbox

step 3.3

把U盘上的内容拉下来

$ git pull usb master

好了,代码同步到另一台机器上了

4, 测试一下

step 4.1

改动一下文件,比如README.txt

step 4.2

$ git add README.txt

$ git commit -m "update from another laptop"

$ git push usb master

step 4.3

插回原来的laptop

$ git pull usb master

step 4.4

查看提交历史

$ git log

发现两台电脑上提交的记录都在log里面

好了,成功。现在U盘成为了你的GitHub,你和你的代码之间,再没有阻隔。

当然,最后,需要定期给U盘做一个备份。技术发展到今天,数据安全靠天吃饭的日子已经一去不复返了,没有什么U盘,硬盘是靠得住的。

原文链接: http://wuminqi.com/blog/2012/01/08/%E6%8A%8Agit-repository%E5%BB%BA%E5%88%B0u%E7%9B%98%E4%B8%8A%E5%8E%BB/

把Git Repository建到U盘上去的更多相关文章

  1. 把Git Repository建到U盘上去(转)

    把Git Repository建到U盘上去 转 把Git Repository建到U盘上去 Git很火.原因有三: 它是大神Linus Torvalds的作品,天然地具备神二代的气质和品质: 促进了生 ...

  2. 【转】把Git Repository建到U盘上去

    CHENYILONG Blog 把Git Repository建到U盘上去 转 把Git Repository建到U盘上去 Git很火.原因有三: 它是大神Linus Torvalds的作品,天然地具 ...

  3. git: fatal: Not a git repository (or any of the parent directories): .git

    在看书 FlaskWeb开发:基于Python的Web应用开发实战 时,下载完源码后 git clone https://github.com/miguelgrinberg/flasky.git 试着 ...

  4. git 解决fatal: Not a git repository

    我用git add file添加文件时出现这样错误: fatal: Not a git repository (or any of the parent directories): .git 提示说没 ...

  5. fatal: Not a git repository (or any of the parent directories): .git

    $ git remote add origin https://github.com/heyuanchao/YouxibiClient.gitfatal: Not a git repository ( ...

  6. Git CMD - init: Create an empty Git repository or reinitialize an existing one

    命令格式 git init [-q | --quiet] [--bare] [--template=<template_directory>] [--separate-git-dir &l ...

  7. git错误:fatal: Not a git repository (or any of the parent directories): .git

    git错误:fatal: Not a git repository (or any of the parent directories): .git 我用git add file添加文件时出现这样错误 ...

  8. git 使用过程中遇到的问题does not appear to be a git repository Could not read from remote respository

    想把本地的git库上传到github上.github已经新建了一个public仓库,利用网站的命令 git Bash报错:does not appear to be a git repository  ...

  9. 执行git命令时出现fatal: 'origin' does not appear to be a git repository错误

    在执行git pull origin master时出现: fatal: 'origin' does not appear to be a git repository fatal: Could no ...

随机推荐

  1. 投资自己【用Java写系统】

    猿来如此:http://programmer.ischoolbar.com/

  2. 微信小程序的canvas和遮盖布颜色设置问题

    canvas绘画出并显示小程序的逻辑首先是将网络图片转化为本地图片,其次再将进行绘画.将本地图片和二维码显示在画布上,最后将整个画布截图用api显示在屏幕上.真正的画图让他飞去屏幕外. 有时候会需要用 ...

  3. [考试反思]1103csp-s模拟测试99: 美梦

    可能这次考得好的原因就是熬夜颓废到不算太晚?(啪) 但是是真心困. 考前跟akt说:我希望今天考一点那种不用动脑子,就是一直码的题. 然后开门T1一道线段树维护单调栈的板子我就...了 当时调了一上午 ...

  4. 自己实现 aop 和 spring aop

    上文说到,我们可以在 BeanPostProcessor 中对 bean 的初始化前化做手脚,当时也说了,我完全可以生成一个代理类丢回去. 代理类肯定要为用户做一些事情,不可能像学设计模式的时候创建个 ...

  5. JS面试题-<变量和类型>-JavaScript浅拷贝与深拷贝

    前言 最开始了解到深浅拷贝是因为准备面试,但那个时候因为在学校做的项目比较少需求也比较简单,所以没有在项目中遇到这类问题,所以对这个问题就属于知道这个知识点,看过相关内容,却没有自己的总结,也没有深入 ...

  6. CentOS7.6手动编译httpd-2.4.25

    手动编译httpd-2.4.25 系统:CentOS7.1810 httpd:2.4.25 编译时报错解决技巧:报什么错,就装这个错误的devel,比如报http2错误,就yum search htt ...

  7. 总结一下 IEnumerable 的例子

    本篇将围绕 <试试 IEnumerable 的 10 个小例子>和<试试 IEnumerable 的另外 6 个小例子>给出的例子,总结一下对于 IEnumerable 接口的 ...

  8. Spring 应用之Spring JDBC实现

    jdbcTemplate类的入门 方式一 POM.XML <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x ...

  9. 微信小程序api封装(promise)

    顺带这是我平时公司切换改变网络环境 直接上代码,我相信就可以懂了, //app.js function fetchApi(url, type, params, method) { return new ...

  10. [剑指offer]第1题,二维数组中的查找

    ①题目 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...