我该如何共享git stash?


32

有没有一种方法可以在git中共享存储?

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

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

鉴于存储实际上已经是一个带有提交(显然)的分支,因此我不打算按照“将每个存储都提交给一个分支然后共享这些存储”的方式寻找解决方案-我已经有了很多,许多分支机构。因此,我正在寻找refspec或类似的东西来控制推/拉。

Answers:


26

隐藏是just stashrefs/stash,您可以将其推送到远程分支:

git push origin stash@{2}:refs/heads/otherstash

但是,Git将拒绝直接推送到refs/stash。另外,似乎没有办法将整个reflog送到存储先前存储的位置。


6
git push origin $(for sha in $(git rev-list -g stash); do echo $sha:refs/heads/stash_$sha; done)应该很好地处理所有藏匿处;另请参见stackoverflow.com/a/5248758/85371
sehe

11

它并没有很好地集成,git push但是为了避免创建分支,我使用了git stash show -p > change.patch(在存储更改后),甚至git diff --cached > change.patch创建了补丁,在我git apply change.patch使用的下一台机器上。

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


是的,但是怎么 ?git stash -p仅交互地询问我每个大块-然后吐出我不明白的长行。我可以带到另一台机器的那个“补丁”在哪里?什么是git diff--cached?以及如何使用git apply?您能再详细一点吗?
Motti Shneor '18

我详细说明并纠正了我的答案
Neo

4

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

git diff >> file.diff

3
注意,这仅适用于产生差异的对象。当心输出中的“二进制文件不同”。
利亚姆
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.