我需要一种方法来导出存储的变化到另一台计算机。
在1号电脑上我做到了
$ git stash save feature
我试图获得隐藏补丁到一个文件,然后将其导入到另一台计算机
$ git stash show -p > patch
这个命令给了我一个文件,我可以移动到另一台计算机上,这个回购是克隆的,但问题是如何将它作为一个存储再次导入。
我需要一种方法来导出存储的变化到另一台计算机。
在1号电脑上我做到了
$ git stash save feature
我试图获得隐藏补丁到一个文件,然后将其导入到另一台计算机
$ git stash show -p > patch
这个命令给了我一个文件,我可以移动到另一台计算机上,这个回购是克隆的,但问题是如何将它作为一个存储再次导入。
当前回答
或者,您可以从您的存储(在计算机1上)创建一个分支,使用
git stash branch stashed_changes_branch
提交您的更改:
git commit -a
然后在计算机2上添加它作为遥控器:
git remote add pc1 user@computer1:/path/to/repo
现在您可以使用
git fetch pc1
现在你可以以你想要的方式导入提交;使用git cherry-pick, git rebase或任何你喜欢的… 如果你想让它看起来像git stash apply;你可以选择使用git——不提交。
如果在computer1和computer2之间没有直接连接;你可以使用一个远程(如github或类似的东西):
git push origin stashed_changes_branch
在计算机2上:
git fetch
其他回答
您可以通过简单地运行应用补丁文件(无需提交更改)
git apply patchfile
然后你可以简单地从当前工作目录创建一个新的存储:
git stash
另一种选择是将.git文件夹从一台计算机rsync到另一台计算机。Rsync只处理文件更改(比复制快)。
这种方法的一个缺点是配置也会被覆盖,如果在两台机器之间运行不同的.git配置,可能不希望出现这种情况。但是您可以通过在rsync中使用——exclude选项排除文件来克服这个问题。
总的来说,我认为原生Git解决方案更干净,但是这个rsync hack对于那些赶时间的人来说可能更熟悉rsync而不是Git。
如果您想将更改从一台机器移动到另一台机器,您可以始终在您的机器上提交更改,然后在他们的机器上进行软重置。
办公室
Git commit -m "-stash-"
厨房
git重置-软头~1
Git -no-pager stash show -p >补丁
将存储的更改复制到补丁文件
Git应用路径/到/the/patch/文件
应用补丁文件中的stash
下面的shell脚本允许用户将所有的存储从一个文件夹复制到另一个文件夹。 https://gist.github.com/senthilmurukang/29b55a0c0e8694c406991799153f3c43
原文中的启动命令:
git stash show -p stash@{x} > patch_file
对我不起作用(出于某种原因,它创建了不可用的补丁文件)。相反,我不得不:
git stash apply stash@{x}
git commit
我想转移的每一笔钱然后,我将'parent' repo放置在` child' repo:///范围内,并对每个stash提交执行以下操作:
git fetch file:///path_to_parent_git && git cherry-pick commit_sha
git reset --soft HEAD^
git stash save my_new_stash_on_child
这个更复杂,但对我来说很管用。