gpt4 book ai didi

git - 将一个分支从一个仓库复制到另一个仓库

转载 作者:行者123 更新时间:2023-12-05 02:21:12 28 4
gpt4 key购买 nike

我有两个 git 存储库,它们应该保持同步并且不能同时访问。一个在工作,一个在家,无法连接网络。

如何处理这个简单的设置?

我尝试过的:

我有一个克隆,它“知道”存储库和存在于可移植硬盘上。

假设有人在“工作”创建了一个新分支,我想将其转移到存储库“家”。如何做到这一点?

如果我只执行 git pull,我会在我的克隆上得到以下内容:

$ git branch --list --all
*master
origin/HEAD -> origin/master
origin/bugfix_component_condition_destruction_fail
origin/master
origin/remove_stoplist_copy_and_erase

问:这是否仅意味着我的本地克隆“知道”某处有这些列出的分支,而我的克隆上没有真实数据期望本地现有的名为“master”的分支?

将 master pull/推到两个 repos 很容易。但是在我的本地克隆中似乎不存在任何其他人。我必须将每个远程分支跟踪到我的克隆的本地分支,然后将其转移到另一个存储库吗?

问:如果两个 repo 提交都将被推送,是否有任何典型的方法来处理两个 repo 以使它们同步?

问:是否有获取所有信息以及所有远程分支的内容的技巧。

对我来说, repo 协议(protocol)的“克隆”是什么意思有点神秘?它似乎不是真正的克隆,而只是一些元数据和主分支。这样对吗?

编辑:

如果我启动 gitk --all 我会看到在分支中完成的所有更改。看起来分支的内容在克隆中。

但如果我这样做:

$git checkout -b remove_stoplist_copy_and_erase --track remotes/origin/remove_stoplist_copy_and_erase
error: Not tracking: ambiguous information for ref refs/remotes/origin/remove_stoplist_copy_and_erase
Switched to a new branch 'remove_stoplist_copy_and_erase'

所以我做了:

$git checkout origin/remove_stoplist_copy_and_erase
$git checkout -b remove_stoplist_copy_and_erase

现在推送它: $git push --set-upstream ex remove_stoplist_copy_and_erase

我担心必须手动为两个 Remote 上的所有分支执行所有这些操作才能使两者同步。这项工作是否有一些“最佳实践”?

最佳答案

您可以为此使用 bundle 。无需在可移植磁盘上拥有完整的存储库

我们称它们为repo1repo2

在 repo1 你调用:

  • $ git fetch <bundle2> 'refs/heads/*:refs/remotes/repo2/*'从在 repo2 中创建的包文件导入更改
  • $ git bundle create <bundle1> --all --not --remotes=repo2创建一个包以发送到 repo2

在 repo2,相应地:

  • $ git fetch <bundle1> 'refs/heads/*:refs/remotes/repo1/*'
  • $ git bundle create <bundle2> --all --not --remotes=repo1

manpage包含更多信息和示例。

关于git - 将一个分支从一个仓库复制到另一个仓库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36093757/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com