Git在两个文件夹之间合并,而不是分支

时间:2012-04-10 15:39:28

标签: git merge

假设以下情形:

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

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

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

3 个答案:

答案 0 :(得分:5)

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

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

所以,如果我有2个相同应用程序的文件夹,可能会有轻微的更改。

我将在终端

中执行此操作
meld ./app_branch_master ./app_branch_dev

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

我就是这样做的。

答案 1 :(得分:4)

是的,你可以在技术上完成这一点,但仅仅因为修复你的错误还为时不晚。你需要回到过去并以正确的方式做到这一点:

  1. 将您的project-with-feature-b文件夹移到git repo:

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

  3. 根据该提交ID创建一个名为feature-b的新分支。如果您跳过第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. 返回主分支并将feature-b分支合并为主

    $ git merge --no-ff feature-b
    
  6. 将来,您应该在开始工作之前使用上面的分支。学会正确使用这些工具,而不是他们应该如何思考。

答案 2 :(得分:1)

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