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

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"

step 1.4

把所有"untracked files"加入索引

step 1.5

提交到repository

$ git commit -m "initialized."

 

 2, 搞到U盘上去

step 2.1

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

我的路径是"/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

查看提交历史

发现两台电脑上提交的记录都在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/

转载于:https://www.cnblogs.com/Caersi/p/6367271.html

### 如何通过Git从网下载文件或项目 要实现从网克隆Git仓库或将Git与网集成,可以通过创裸仓库(bare repository)并将其存储在网络驱动器或云存储中来完成。以下是具体方法: #### 创裸仓库并将其实例化到网络位置 1. **初始化裸仓库** 首先,在目标位置(如U或其他共享存储设备)创一个目录,并初始化为裸仓库。例如,假设目标路径为`H:\git\MyProject.git`,则可以运行以下命令[^4]: ```bash git init --bare H:\git\MyProject.git ``` 2. **推送本地代码至裸仓库** 如果已有本地代码库,则可将该代码库的内容推送到新创的裸仓库中。在本地仓库根目录下执行以下命令: ```bash git remote add origin file:///H:/git/MyProject.git git push -u origin master ``` 这里的`file:///H:/git/MyProject.git`指定了裸仓库的位置。 3. **从其他计算机克隆裸仓库** 当需要从另一台机器访问此裸仓库时,只需指定其路径即可。如果两台电脑连接在同一局域网内,也可以通过SMB协议挂载共享文件夹作为网络驱动器。例如: ```bash git clone file:///H:/git/MyProject.git ``` #### 使用第三方工具辅助Git与网同步 对于更复杂的场景,比如希望直接将Git仓库上传到云端而非仅限于物理介质上的共享文件夹,可能需要用到一些额外软件支持。例如Dropbox、Google Drive等主流在线存储服务本身并不完全兼容原生Git操作模式,因此推荐采用专门设计用于解决此类需求的应用程序,像[Duply](http://duply.net/)或者[rclone](https://rclone.org/)这样的解决方案可以帮助自动化备份过程以及管理跨平台间的版本控制系统迁移工作流程。 另外值得注意的是,虽然理论上任何能够提供读写权限的地方都可以当作远程主机对待从而被纳入Git的工作范畴之内,但在实际应用过程中仍需考虑性能损耗等因素的影响;尤其是针对频繁更新的大规模数据集而言更是如此——因为每次提交都会涉及整个历史记录副本传输动作的发生,这无疑会显著增加带宽占用量级及时延开销等问题的存在可能性。 ```python import os from pathlib import Path def check_bare_repo(path_to_check): """验证给定路径是否是一个有效的裸仓库""" repo_path = Path(path_to_check).resolve() if not (repo_path / 'HEAD').exists(): raise ValueError(f"{path_to_check} 不像是一个合法的裸仓库.") example_usage = """ # 假设我们有一个位于Z下的名为test-repo.bare的潜在候选对象... try: check_bare_repo('Z:\\repositories\\test-repo.bare') except Exception as e: print(e) """ print(example_usage) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值