离开办公室的情况不止一次,只保存了一些未提交的代码。
因此,如果我想继续使用相同的功能,我必须通过 SSH 连接到我的主机,创建一个一次性分支,提交存储并将新分支推送到开发存储库。
现在我想知道是否有一个更清洁、更实用的解决方案可以将 git 存储“复制/导出”到另一个本地存储库。我已经排除了在我的办公机器上对本地存储库进行 SCP 处理的可能性,因为我的笔记本电脑上也可以进行一些工作。
您可以使用git stash show
制作补丁,然后git apply
在您的家用机器上使用它。
stash 被保存为一种特殊类型的提交,因此它在 git 对象数据库中可用。但是,对该提交的引用位于通常可用于获取的命名空间之外。
您可以通过在源存储库上运行以下命令来获取最新的存储:
git symbolic-ref refs/heads/exported-stash refs/stash
这将创建一个名为的分支exported-stash
,可以像任何其他分支一样获取该分支。如果您愿意,您可以使用不同的名称,但避免使用,stash
因为这会导致一些令人讨厌的警告,即名称与实际存储不明确。从远程获取后,它可以应用于另一个存储库:
git stash apply origin/exported-stash
(假设它是从远程获取的origin
)。
进行更改后,您甚至可以将它们存储在本地,并将更新后的存储推送回原点:
git push origin +stash:exported-stash
将这+
变成强制推动,但在这种情况下,这实际上是安全的。stash@{1}
由于 stash列表保存为引用日志,因此将仅将原点上的旧版本存储移动到。
您可以保存补丁并将其发送给自己。
git diff > patchfile
然后你可以应用它...
git apply --stat patchfile
正如 Carl Norum 所指出的,git
可用于创建补丁。但是,该命令有点棘手。你需要打电话
git diff stash@{0}^ stash@{0} > patch
创建一个补丁(请注意,您的外壳可能需要您将存储的名称用引号括起来)。这为您的 stash 的父级和您的 stash 本身的所有差异创建了一个补丁。
然后,在您的另一台机器上,您可以使用
git apply patch