是否可以快速保存更改,以便通过USB密钥将其传输到另一台机器?

时间:2012-02-10 16:18:54

标签: git

我有一台工作机器和一台家用机器,两者都是同一个在线仓库的克隆。我做了一些改变,在我离开工作之前我没有时间完成,但是我想把它们带到我身边,这样我就可以在家里继续工作了。

我想避免:

  • 通过创建新的分支或其他方式推送对在线仓库的任何更改,因为我不希望用不必要的提交污染仓库。
  • 制作整个仓库的副本,因为它非常大。
  • 筛选Windows资源管理器以获取所有文件并手动复制它们,因为文件很多。

基本上,有一种快速的方法可以让我的工作正在进行中吗?和我一起回家,没有任何推动?

5 个答案:

答案 0 :(得分:4)

使用

git bundle

它是为此目的而设计的。它只存储你告诉它的内容。

答案 1 :(得分:1)

创建一个WIP分支看起来真的像是去这里的方式,它真的很快就能做到并且容易摆脱。也就是说,我认为如果您真正想做的事情是可能的,那么位于中心的'diff'文件将位于您的.git文件夹中。我真的不知道这一点,即使有可能,它似乎比创建远程分支更脏和风险......:/

所以,我要做的是

git branch WIP
git checkout WIP
push the branch to master 
checkout the branch from home
git rebase -i once you're ready to commit (to squash the "unnecessary commits")
delete the remote branch

一旦你获得了它的节奏,它真的非常快速和无痛,并且使用像git这样的分布式VCS的胜利

答案 2 :(得分:0)

我知道你声明你不想分支或者其他,但是你可以拥有本地分支,然后将它作为远程分支推送到git存储库。然后,您就可以回家并将远程分支拉到家中的机器上并继续处理它。你可以反复这样做,回家,然后回去工作。 完成后,将远程分支合并到(开发或主分支)中,然后将其删除。分支就像从未存在过一样。在git中,您还可以拥有私有分支,如果底层git服务器支持,则不允许其他人看到分支。 复制文件或你试图做的其他方式只是从git的有用性中剔除,因为它是分布式的,分支是便宜的,它更容易分支,然后在需要时合并。进行大量提交并不是件坏事。

答案 3 :(得分:0)

首先,我应该说我还推荐Will Buck的WIP分支答案,因为它们易于创建和破坏,而且它们很轻。

无论如何,你所要求的是可能的。

您可以从一组提交中创建一组修补程序,将它们复制到USB中,然后将它们应用到您的家中。

所有这些步骤都可以通过以下方式完成:git format-patchgit am

git format-patch将从您指定的提交中生成补丁文件列表。

git am会在HEAD

之上应用指定的补丁文件

progit本书提供了有关如何使用这些命令的更多信息。

答案 4 :(得分:0)

这是一个消极的答案,以拯救他人的麻烦:我认为如果你的USB密钥足够大,可以容纳存储库,而你只是不想每次都等待副本,那么git stash结合推送到USB将是一个合适的工具。但是,由于存储实际上使用了reflog而不仅仅是ref refs/stash,因此无法简单地推送存储状态。