Git 将存储导出到另一台计算机
我需要一种方法将隐藏的零钱导出到另一台计算机 在电脑1上我做到了Git 将存储导出到另一台计算机,git,Git,我需要一种方法将隐藏的零钱导出到另一台计算机 在电脑1上我做到了 $ git stash save feature 我正在尝试将隐藏修补程序获取到一个文件,然后将其导入到另一台计算机 $ git stash show -p > patch 此命令为我提供了一个文件,我可以将其移动到克隆此repo的另一台计算机上,但问题是如何再次将其作为存储导入。只需运行 git apply patchfile 然后,您只需从当前工作目录创建一个新的存储: git stash 或者,您可以使用以下命
$ git stash save feature
我正在尝试将隐藏修补程序获取到一个文件,然后将其导入到另一台计算机
$ git stash show -p > patch
此命令为我提供了一个文件,我可以将其移动到克隆此repo的另一台计算机上,但问题是如何再次将其作为存储导入。只需运行
git apply patchfile
然后,您只需从当前工作目录创建一个新的存储:
git stash
或者,您可以使用以下命令从存储库(在计算机1上)创建分支: 提交您的更改:
git commit -a
然后将其添加为计算机2上的远程:
git remote add pc1 user@computer1:/path/to/repo
现在,您可以使用
git fetch pc1
现在,您可以按所需的方式导入提交;使用git cherry pick、git rebase或任何您喜欢的工具。。。
如果你想让它看起来像你刚刚做的一样,那么就应用git-stash;您可以使用git cherry pick--no commit.
如果计算机1和计算机2之间没有直接连接;您可以使用遥控器(如github或类似工具):
git push origin stashed_changes_branch
在计算机2上:
git fetch
或者,您可以将整个本地存储导出到另一台计算机,如下所示:
在旧的和新的git目录上执行,以确保两者都有最新的更改git pull
- 将.git文件夹从旧git目录复制到新存储库
rsync
文件夹从一台计算机传送到另一台计算机rsync
仅处理文件更改(比副本更快)
这种方法的一个缺点是配置也会被覆盖,如果您在两台机器之间运行不同的.git配置,这可能是不需要的。但您可以通过使用rsync
中的--exclude
选项排除文件来克服这一问题
总的来说,我认为本地Git解决方案更干净,但是对于那些可能比Git更熟悉rsync的人来说,这个
rsync
hack可能是个不错的选择。原始帖子中的启动命令:
git stash show -p stash@{x} > patch_file
不适合我(由于某种原因,它创建了不可用的补丁文件)。相反,我不得不:
git stash apply stash@{x}
git commit
对于我想转移的每个藏品。然后,我将“父”repo放在文件:///reach of the“child”repo中,并对每个隐藏提交执行以下操作:
git fetch file:///path_to_parent_git && git cherry-pick commit_sha
git reset --soft HEAD^
git stash save my_new_stash_on_child
这是一个更复杂的问题,但对我来说确实奏效了。如果你想将更改从一台机器移动到另一台机器,你可以在机器上提交更改,然后在他们的机器上进行软重置 办公室
git提交-m“-stash-”
厨房
git reset——软头~1
如何在SourceTree中导出存储:
您可以从一台计算机创建作为修补程序文件的存储,然后可以将该修补程序文件共享到另一台计算机 将存储创建为补丁
$ git stash show "stash@{0}" -p > changes.patch
“stash@{0}”是存储的ref。它将使用最新的存储创建修补程序文件。
如果您想要不同的文件,请使用命令$git stash list
查看您的文件列表,并选择要修补的文件
应用修补程序
现在将该存储转移到另一台机器上,并将其粘贴到项目的根文件夹中。
然后运行这个命令
$ git apply changes.patch
如果有错误,您希望更改
$ git apply changes.patch --reverse
隐藏是基本提交和索引之间工作树的特殊合并提交。一种方法是将每个补丁保存为单独的补丁,签出隐藏的第一个父级,从两个补丁中恢复索引和工作树,最后恢复隐藏(似乎有一个答案是这样的) 这是完全从存储中重新创建所有信息所必需的,如果您不关心这一点,至少应该在恢复之前签出存储的第一个父级,以避免冲突并跟踪存储的创建位置 这就是我所做的,以完全恢复所有库存从一个回购到另一个。如果不能将它们放在同一台计算机上,则可以在创建后将隐藏标记保存在捆绑包中,并将引用列表和捆绑包复制到目标计算机 从原始回购协议的根:
stash_uuu
+逻辑存储引用中的数字)refs=$(吉特储藏清单|切割-d:-f1)
对于$refs中的ref;dogit标记隐藏${ref/[^0-9]}$ref;完成
refs=$(git版本解析$refs | tac)
oldpath=$PWD
注意:这需要bash或兼容的shell(ksh,zsh应该可以…)如果shell不支持${param//pattern}
现在在新回购协议中,对于每个ref:
用于$refs中的ref;dogit获取$oldpath$ref;吉特储藏室-m“$(吉特)
$ git apply changes.patch --reverse