相关疑难解决方法(0)

如何在git中合并两个具有不同目录层次结构的分支?

我开始使用Maven和Web应用程序项目,因此目录层次结构发生了变化.我为Maven集成创建了一个新分支.现在我有两个分支,一个具有旧的目录层次结构,另一个具有maven目录层次结构.两个分支都有新的提交(错误修正和新功能).

我想摆脱旧分支并将其更改合并到Maven分支.Git merge会产生无数的冲突,感觉无法解决.我相信这是因为文件路径已经改变.

处理此合并的最佳方法是什么?

git merge git-merge

66
推荐指数
2
解决办法
3万
查看次数

git merge:删除我要保留的文件!

如何在git中合并两个分支,从分支中保留必要的文件?

合并两个分支时,如果文件在一个分支中删除而在另一个分支中没有删除,则最终删除该文件.

例如:

  • 创建新分支时,master中存在一个文件
  • 你从master中删除文件,因为我们不需要它(还)
  • 您在分支中进行更改以添加依赖于现有文件的功能
  • 你在master中修复bug(不能丢弃)
  • 你有一天合并,文件消失了!

如何再现:

  1. 用一个文件创建一个git repo.

    git init
    echo "test" > test.txt
    git add .
    git commit -m "initial commit"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建一个分支

    git branch branchA
    
    Run Code Online (Sandbox Code Playgroud)
  3. 删除master中的文件

    git rm test.txt
    git commit -m "removed file from master"
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在branchA中进行任何不接触已删除文件的更改(必须保持不变以避免冲突)

    git checkout branchA
    touch something.txt
    git add .
    git commit -m "some branch changes"
    
    Run Code Online (Sandbox Code Playgroud)

从这里,我发现合并这两个分支的任何方式都删除了test.txt文件.假设我们依靠文件branchA,这是一个很大的问题.


失败的例子:

合并1

git checkout branchA
git merge master
ls test.txt
Run Code Online (Sandbox Code Playgroud)

合并2

git checkout master
git merge …
Run Code Online (Sandbox Code Playgroud)

git merge branch

56
推荐指数
4
解决办法
4万
查看次数

标签 统计

git ×2

merge ×2

branch ×1

git-merge ×1