使用 U 盘上的 GIT 获取“旅行代码”
Posted
技术标签:
【中文标题】使用 U 盘上的 GIT 获取“旅行代码”【英文标题】:Using GIT on USB stick for "travelling code" 【发布时间】:2011-09-17 09:47:47 【问题描述】:我已在此处和 Google 上详尽地搜索了我的问题的答案。我找到了一些很好的资源和学习工具来理解 Git 及其作用,但我需要得到一些说明和帮助。
我正在做的是在我的办公室和家里工作的一个副项目。 (我正在将 C# 代码迁移到 Java 以帮助我学习这两种语言。)
设置:
环境:Windows 7(VS 2008 在 XP 虚拟机上) Git:msysgit 1.7.4 IDE:VS 2008 和 Eclipse Git 插件: Eclipse:我正在使用 EGit。 VS 2008:我打算使用这里提到的 SO,Git Extensions Git 存储库:位于 U 盘上的 \Repo - 现在它只有一部分 Java 代码,因为我在学习 Git 时摸索着。 具有 VS 2008 的虚拟机中的 C# 代码从 VM 复制到 USB 记忆棒 - 这还不受版本控制。 是的,我有“基线”所有代码的备份副本。我不得不因为 EGit,当您将代码置于源代码控制之下时,将其从我的 Eclipse 工作区移动到 USB 驱动器上的 git 存储库中。因此,如果在学习过程中出现问题,我可以轻松恢复。我还没有对代码进行重大更改,因为我还在学习。注意:不能使用 Github。
目的/目标:
我想要做的是通过使用 Git 尽可能保持代码井然有序,使用版本控制,但是在工作中设置它时,出于某种原因,我有点担心它不会工作我回家的时候也是这样。 (旁注:我感觉到“这是 git 的美妙之处。”在某处输入答案。)
我的问题是:
使用 Git 作为版本控制系统,这种设置的最佳实践是什么? 我是否应该将它留在 U 盘上,只使用该存储库来存储所有内容?抱歉,篇幅较长,但我想提供尽可能多的信息。提前感谢任何人在阅读我的小说后可以提供的任何信息。
【问题讨论】:
在你办公室的服务器上创建一个 repo 并给自己 SSH 访问权限不是一个选项吗? @Jaitsu - 我可能可以为此设置自己的服务器(可能是 Ubuntu)。 是的,它可能稍微复杂一些,但它还有一个额外的好处是可以从任何地方访问(无论是否使用 USB 记忆棒) @Jaitsu:对于某些人来说,携带 U 盘可能比携带互联网连接更容易。 @John Bartholomew,好点...肯定会证明是有用的,但 git 的整个想法是断开连接...他将在他的机器上有一个本地仓库,而远程仓库将当他有连接时被推到 【参考方案1】:只是一个建议:
我在我的 USB 记忆棒上使用 Truecrypt。我的代码进入 tc 卷。万一我丢了棍子——这在这些东西中很常见——发现者不会得到我的代码。
【讨论】:
【参考方案2】:使用 U 盘保存代码和存储库是一种选择 - 您可以获得可移植性和版本控制的优势。
但是,另一种方法是在 USB 记忆棒(或保管箱)上保留一个裸仓库,并在您要使用该代码的每台机器上复制它。当你完成你正在做的事情后,你可以将你的更改推送到上游(到 U 盘或 Dropbox 或任何地方)。
拥有一个可移植的裸克隆意味着如果你忘记(或 $DEITY 禁止)在它的旅行中丢失了棍子,你将不会拿着你的……没有任何代码可以工作。如果您丢失了密钥,您可以从任何存储库重新创建一个克隆,并且,如果您在家中或工作或其他地方忘记了密钥,您可以在您的项目上做一些事情并将更改与密钥合并下次他们在一起的时候。
【讨论】:
感谢您的回复。我将尝试 Dropbox 方法。我刚刚创建了一个帐户并安装了客户端。这里什么都没有。 @bovineone 没关系。我用它所有的时间。只是一个快速提示;克隆存储库时,请使用--no-hardlinks
选项。
谢谢!我会记住的。 :)
将 USB 驱动器指定为推送更改的“远程存储库”的另一个好处是通过节省写入来延长设备的使用寿命。也就是说,所有的修订都在本地完成,分支等,直到你准备好在一天结束时推回 USB 驱动器:)【参考方案3】:
另一种方式是通过bundles
。这里假设你使用的是独立机器,见how-to-use-git-in-a-sneakernet-environment
【讨论】:
【参考方案4】:尝试在 U 盘上保留一个裸仓库并将其克隆到您正在使用的机器上。
在您收拾行装或完成移除您的棒之前,将您的更改推回到“原点”(这是棒上的裸仓库)。
当您在其他工作站(家?)上打开时,获取您的更改。
【讨论】:
我也可以。请参阅上面我对丹妮丝的回复。 :-) @bovineone 好的,这是一个小元...所以一个裸存储库只是一个数据库,它是每个合并到其中的提交的完整历史记录。基本上它是您在“工作”副本中的 .git 文件夹的内容。 git 记录所有提交以及克隆/推送/拉取操作将数据库中的所有项目(具有智能,因此不会发生冲突)传输到目标/从目标传输。 @bovineone 让您了解我在做什么,我在两个位置的计算机上安装了保管箱。我在本地创建了一个 git repo(工作副本),向其中添加了我的代码。然后我将它作为一个裸存储库克隆到我的保管箱文件夹中(该文件夹自动上传到保管箱)。然后我修改了我的工作副本以反映放置在 Dropbox 中的文件夹是我的工作副本的“来源”和上游。每当我推送更改时,它们都会同步到云端,当我到达另一台机器时,我会从保管箱文件夹中拉取。 好的,完成了。本地仓库位于 F:\Repo 下 - 远程位于 C:\Users\一种常见的解决方案是在 Dropbox 中保留一个裸 repo,然后通过推/拉来保持您的计算机同步。
【讨论】:
所以,我使用了裸仓库。它只是跟踪您所做的更改,但实际上并没有将源代码保存在裸存储库中吗? - 我一直想找个借口与 Dropbox 合作。这可能是它。 :) 我已经成功地在 Dropbox 上保存了完整的 repo,origin
在 github 上。我可以在三台不同的机器上工作,它们(几乎)总是同步的,只是偶尔做一个git push
以确保我在其他地方有备份。
@bovineone:这几乎就是一个裸仓库所做的,是的。使用 bare 的原因是 (1) 节省 Dropbox 中的空间和 (2) 在您的工作树中进行数十次文件更改迭代,避免使 Dropbox 变得混乱。
好的。是的,Dave G 提出了同样的建议。我刚刚设置了 Dropbox。现在配置东西,然后在家里尝试。谢谢!以上是关于使用 U 盘上的 GIT 获取“旅行代码”的主要内容,如果未能解决你的问题,请参考以下文章