6

离开办公室的情况不止一次,只保存了一些未提交的代码。

因此,如果我想继续使用相同的功能,我必须通过 SSH 连接到我的主机,创建一个一次性分支,提交存储并将新分支推送到开发存储库。

现在我想知道是否有一个更清洁、更实用的解决方案可以将 git 存储“复制/导出”到另一个本地存储库。我已经排除了在我的办公机器上对本地存储库进行 SCP 处理的可能性,因为我的笔记本电脑上也可以进行一些工作。

PS:我的问题看起来像是这个问题的延续

4

4 回答 4

2

您可以使用git stash show制作补丁,然后git apply在您的家用机器上使用它。

于 2013-07-23T13:35:20.797 回答
1

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列表保存为引用日志,因此将仅将原点上的旧版本存储移动到。

于 2013-07-23T14:32:13.897 回答
1

您可以保存补丁并将其发送给自己。

git diff > patchfile

然后你可以应用它...

git apply --stat patchfile
于 2013-07-23T13:36:10.073 回答
0

正如 Carl Norum 所指出的,git可用于创建补丁。但是,该命令有点棘手。你需要打电话

git diff stash@{0}^ stash@{0} > patch

创建一个补丁(请注意,您的外壳可能需要您将存储的名称用引号括起来)。这为您的 stash 的父级和您的 stash 本身的所有差异创建了一个补丁。

然后,在您的另一台机器上,您可以使用

git apply patch

于 2013-07-23T14:22:52.503 回答