假设以下情形:
我有一个名为project
的目录的git项目。在这个目录里面,我做了一些提交。
然后,使用cp -r
我将此目录复制到名为project-with-feature-b
的目录,即我手动创建了一个分支。
现在我想合并这两个文件夹,就好像它们是两个分支一样,有没有办法用git做到这一点?
更具体地解决我的问题。我有一个svn存储库,我正在使用git-svn工具来克隆它。我不能使用-T / -b / -t选项,但我想进行合并。
答案 0 :(得分:5)
这个问题很老了,我最近加入了。
我正在使用ubuntu,并使用meld来解决合并问题。
所以,如果我有2个相同应用程序的文件夹,可能会有轻微的更改。
我将在终端
中执行此操作meld ./app_branch_master ./app_branch_dev
这将打开文件夹, Meld需要时间来比较两个文件夹。 它会告诉你左边有什么,右边有什么。 你也可以从那里移动一些代码。
我就是这样做的。
答案 1 :(得分:4)
是的,你可以在技术上完成这一点,但仅仅因为修复你的错误还为时不晚。你需要回到过去并以正确的方式做到这一点:
将您的project-with-feature-b
文件夹移到git repo:
$ mv project-with-feature-b ..
返回git log
并在创建project-with-feature-b
目录之前找到上次提交的提交ID。如果您尚未在project-with-feature-b
目录中“进行”任何提交,则可以跳过此步骤。
根据该提交ID创建一个名为feature-b
的新分支。如果您跳过第2步,请省略<commit-id-from-step-2>
$ git branch feature-b <commit-id-from-step-2>
$ git checkout feature-b
在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"
返回主分支并将feature-b
分支合并为主
$ git merge --no-ff feature-b
将来,您应该在开始工作之前使用上面的分支。学会正确使用这些工具,而不是他们应该如何思考。
答案 2 :(得分:1)
看一下Detach subdirectory into separate Git repository,一旦你分割了两个目录的历史,你就可以分支,合并或做你想做的任何事情。