如何共享 git stash?

Pet*_*Law 43 git

有没有办法在 git 中共享存储?

我在多台机器上工作,并且经常希望能够将我当前的工作状态从一个转移到另一个。

我正在寻找一种方法,可以将存储从一个克隆推/拉到另一个克隆,并使其显示为另一个克隆的存储,或作为明显的远程分支。如果遥控器已经有自己的藏匿处,我不希望前者一定会起作用。

鉴于存储实际上已经是一个带有提交的分支(显然),我不是在寻找“将每个存储提交到一个分支然后共享它们”的解决方案 - 我已经有很多,许多, 分支. 因此,我正在寻找可用于控制推/拉的refspec或类似参数。

use*_*686 29

存储只是stashor refs/stash,您可以将其推送到远程分支:

git push origin stash@{2}:refs/heads/otherstash
Run Code Online (Sandbox Code Playgroud)

但是,Git 将拒绝直接推送到refs/stash。此外,似乎没有办法推送整个reflogs,其中存储了以前的藏匿处。

  • `git push origin $(for sha in $(git rev-list -g stash); do echo $sha:refs/heads/stash_$sha; done)` 应该适用于所有的 stash; 另见 http://stackoverflow.com/a/5248758/85371 (8认同)

Neo*_*Neo 17

它不像 a 那样集成,git push但为了避免创建分支,我使用git stash show -p > change.patch(在隐藏更改后)甚至git diff --cached > change.patch创建一个补丁,我git apply change.patch在下一台工作的机器上使用它。

至少使用此解决方案,如果在您当前的工作状态下更改了许多文件,则所有内容都包含在单个数据单元中。


小智 6

您可以制作补丁并将其发送给某人。他们要做的就是应用它。

git diff >> file.diff
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这仅适用于生成差异的对象;当心输出中的“二进制文件不同”。 (3认同)