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

And*_*uel 13 git merge

假设以下场景:

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

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

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

nic*_*uza 6

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

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

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

我会在航站楼做这个

meld ./app_branch_master ./app_branch_dev
Run Code Online (Sandbox Code Playgroud)

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

我就是这样做的.


mea*_*gar 5

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

  1. project-with-feature-b文件夹移到git repo之外:

    $ mv project-with-feature-b ..
    
    Run Code Online (Sandbox Code Playgroud)
  2. git log在创建project-with-feature-b目录之前,请重新浏览并找到最后一次提交的提交ID 。如果尚未在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
    
    Run Code Online (Sandbox Code Playgroud)
  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"
    
    Run Code Online (Sandbox Code Playgroud)
  5. 返回您的master分支并将您的feature-b分支合并到master

    $ git merge --no-ff feature-b
    
    Run Code Online (Sandbox Code Playgroud)

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

  • 这样做的问题是丢失了“功能-b”历史记录。 (2认同)