19

假设以下场景:

我有一个 git 项目,它有一个名为project. 在这个目录中,我做了一些提交。然后,cp -r我将此目录复制到一个名为 的目录project-with-feature-b,即我手动创建了一个分支。

现在我想合并这两个文件夹,就像它们是两个分支一样,有没有办法使用 git 来做到这一点?

更具体地解决我的问题。我有一个 svn 存储库,我使用 git-svn 工具来克隆它。而且我不能使用 -T/-b/-t 选项,但我想进行合并。

4

3 回答 3

9

这个问题很老了,我最近才加入。

我正在使用 ubuntu,并使用 meld 来解决合并问题。

所以如果我有同一个应用程序的 2 个文件夹,可能会有细微的变化。

我将在终端执行此操作

meld ./app_branch_master ./app_branch_dev

这将打开两个文件夹,Meld 需要时间来比较两个文件夹。它会告诉你左边有什么,右边有什么。您还可以从那里移动少量代码。

我就是这样做的。

于 2017-05-03T09:32:28.490 回答
6

是的,你可以在技术上做到这一点,但这只是因为现在纠正你的错误还为时不晚。您需要及时返回并以正确的方式执行此操作:

  1. 将您的project-with-feature-b文件夹移到您的 git 存储库之外:

    $ mv project-with-feature-b ..
    
  2. 在创建目录之前返回git log并找到最后一次提交的提交 ID 。project-with-feature-b如果您尚未在project-with-feature-b目录“内部”进行任何提交,则可以跳过此步骤。

  3. 创建一个feature-b基于该提交 ID 调用的新分支。如果您跳过了第 2 步,请省略<commit-id-from-step-2>

    $ git branch feature-b <commit-id-from-step-2>
    $ git checkout feature-b
    
  4. feature-b分支中,将project文件夹替换为您的备份project-with-feauture-b

    $ rm -rf project
    $ mv ../project-with-feature-b project
    $ git add project
    $ git commit -m "Add feature-b"
    
  5. 回到你的 master 分支并将你的feature-b分支合并到 master

    $ git merge --no-ff feature-b
    

将来,您应该在开始工作之前使用上述分支。学习正确使用工具,而不是你认为它们应该如何工作。

于 2012-04-10T15:47:04.950 回答
3

看看Detach subdirectory into separate Git repository,一旦你拆分了两个目录的历史记录,你就可以分支、合并或做任何你想做的事情。

于 2012-04-10T15:56:07.613 回答