相关疑难解决方法(0)

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万
查看次数

标签 统计

branch ×1

git ×1

merge ×1