将存储器导出到另一台计算机
我需要一种方法将隐藏的更改导出到另一台计算机。
在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-pick , git 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
这个比较复杂,但是对我来说是个诀窍。