将存储器导出到另一台计算机

我需要一种方法将隐藏的更改导出到另一台计算机。

在Computer1上我做到了

$ git stash save feature 

我试图把存储补丁到一个文件,然后将其导入到另一台计算机

 $ git stash show -p > patch 

这个命令给我一个文件,我可以移动到另一台计算机,在这个repo克隆,但问题是如何导入它作为一个藏匿处。

谢谢

您可以通过简单的运行来应用补丁文件(无需提交更改)

 git apply patchfile 

然后,您可以简单地从当前工作目录创build一个新的存储:

 git stash 

或者你可以使用你的藏匿处(在电脑1上)创build一个分支

 git stash branch stashed_changes_branch 

提交您的更改:

 git commit -a 

然后将其作为远程计算机2添加:

 git remote add pc1 user@computer1:/path/to/repo 

现在您可以使用检索远程信息

 git fetch pc1 

现在你可以用你想要的方式导入提交了。 使用git cherry-pickgit rebase或者任何你喜欢的东西…如果你想让它看起来像你刚才做的那样, 你可以使用git cherry-pick –no-commit。


如果你在计算机1和计算机2之间没有直接连接, 你可以使用远程(如github或类似的东西):

 git push origin stashed_changes_branch 

并在computer2上:

 git fetch 

或者,您可以按如下方式将整个本地存储导出到另一个compter

  • git pull你的旧的和新的git目录,以确保有最新的变化。
  • 将旧的git目录中的.git文件夹复制到新的存储库中

另一种select是将.git文件夹从一台计算机rsync .git到另一台计算机。 rsync只处理文件更改(比一个副本更快)。

这种方法的一个缺点是configuration也会被覆盖,如果在两台机器之间运行不同的.gitconfiguration,这可能是不希望的。 但是你可以用rsync--exclude选项排除文件来克服这个问题。

总的来说,我认为一个本地的Git解决scheme是更清洁的,但是这个rsync hack对于那些可能比git更熟悉rsync的人来说可能会更好。

原帖的启动命令:

 git stash show -p stash@{x} > patch_file 

没有为我工作(出于某种原因,它创build了不可用的补丁文件)。 相反,我不得不:

 git stash apply stash@{x} git commit 

我想转移每个藏匿。 然后,我把'父'repo放在'child'repo的file:/// reach中,并为每个存储提交做了以下操作:

 git fetch file:///path_to_parent_git && git cherry-pick commit_sha git reset --soft HEAD^ git stash save my_new_stash_on_child 

这个比较复杂,但是对我来说是个诀窍。