假设以下场景:
我有一个 git 项目,它有一个名为project
. 在这个目录中,我做了一些提交。然后,cp -r
我将此目录复制到一个名为 的目录project-with-feature-b
,即我手动创建了一个分支。
现在我想合并这两个文件夹,就像它们是两个分支一样,有没有办法使用 git 来做到这一点?
更具体地解决我的问题。我有一个 svn 存储库,我使用 git-svn 工具来克隆它。而且我不能使用 -T/-b/-t 选项,但我想进行合并。
这个问题很老了,我最近才加入。
我正在使用 ubuntu,并使用 meld 来解决合并问题。
所以如果我有同一个应用程序的 2 个文件夹,可能会有细微的变化。
我将在终端执行此操作
meld ./app_branch_master ./app_branch_dev
这将打开两个文件夹,Meld 需要时间来比较两个文件夹。它会告诉你左边有什么,右边有什么。您还可以从那里移动少量代码。
我就是这样做的。
是的,你可以在技术上做到这一点,但这只是因为现在纠正你的错误还为时不晚。您需要及时返回并以正确的方式执行此操作:
将您的project-with-feature-b
文件夹移到您的 git 存储库之外:
$ mv project-with-feature-b ..
在创建目录之前返回git log
并找到最后一次提交的提交 ID 。project-with-feature-b
如果您尚未在project-with-feature-b
目录“内部”进行任何提交,则可以跳过此步骤。
创建一个feature-b
基于该提交 ID 调用的新分支。如果您跳过了第 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"
回到你的 master 分支并将你的feature-b
分支合并到 master
$ git merge --no-ff feature-b
将来,您应该在开始工作之前使用上述分支。学习正确使用工具,而不是你认为它们应该如何工作。
看看Detach subdirectory into separate Git repository,一旦你拆分了两个目录的历史记录,你就可以分支、合并或做任何你想做的事情。