【问题标题】:Cloning a GIT branch to another repositories GIT branch?将 GIT 分支克隆到另一个存储库 GIT 分支?
【发布时间】:2015-04-23 21:12:10
【问题描述】:

我有两个 GIT 存储库,一个用于工作,一个用于独立开发。我的公司对我一直在从事的一个项目表示了兴趣,并希望我将该分支(主)迁移到他们的仓库(功能/Dynamo)上的一个新分支。 I have created a migrator in the past 但这会破坏被推送到的仓库,因为它是直接的 --bare 然后 --mirror。为了将一个分支从一个存储库移植到另一个存储库(在此过程中创建新分支),我需要做什么?

【问题讨论】:

  • 是否有共享文件(相同的目录/文件名)?
  • 您可以将另一个 repo 添加为另一个遥控器,然后将您的 master 从 A 推送到 B 上的 features/Dynamo 吗?
  • 这是一次性转移吗?
  • 这没有意义?为什么在同一个 git 存储库中有两个完全不同的项目作为分支?为什么没有两个 git 存储库?
  • 有两个 git 存储库,我想将一个分支从一个存储库移植到另一个,他们想使用我编写的包装器。

标签: git bash github migration .git-info-grafts


【解决方案1】:

另一种方法是添加另一个遥控器。

git remote add ehime https://github.com/your_username/your_repo_name.git

现在你所做的所有事情都喜欢

git push origin some_branch

也可以这样做

git push ehime some_branch

用于另一个遥控器。

因此两个遥控器,但一个代码目录。

在共享文件的情况下,进行合并时有很多选项,例如

git checkout branchA
git merge ours branchB

git checkout branchA
git merge -X theirs branchB

控制两个代码库之间的合并方式。

【讨论】:

    【解决方案2】:

    一种简单的方法是在一台机器上克隆两个 repos,然后在“to”repo git checkout -b new_branchcp 中的其他项目目录中的文件。 git add 和 git commit 就完成了。正如我上面所问的,这是否可行取决于您是否具有相同的目录/文件名。如果你这样做了,你会遇到合并冲突,并且两个不同的文件会以一种非常糟糕的方式混合在一起。

    【讨论】:

      【解决方案3】:

      理论上,这是您可以做到的,但我认为拥有两个不同的存储库会更好。 注意:这不会带来你的整个 git 历史,它只会将你项目的最新状态添加为一个分支。

      $ git checkout -b OtherProject
      
      -- to prevent losing your git database
      $ mv .git/ /temp/gitBackup
      
      -- clear out all the stuff from the main repository
      $ rm -rf *
      
      -- copy contents of the tip of master from your other project
      -- but not the .git/ folder
      $ cp -r /path/to/personal/project/* .
      $ rm -rf .git/
      
      -- bring back your old .git folder
      $ mv /temp/gitBackup ./.git
      
      -- add all your new files to this branch
      $ git add -A .
      $ git commit -am "The other project is now in this repo as a branch"
      

      同样,这不是推荐的做法。您的 git 数据库将变得更大,这不是分支的预期用途。我强烈建议每个项目使用一个存储库,并且可能使用submodules 从您的 git 存储库中管理子项目。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-26
        • 1970-01-01
        • 1970-01-01
        • 2012-11-02
        • 2012-02-11
        • 2022-01-20
        • 1970-01-01
        • 2020-09-27
        相关资源
        最近更新 更多