合并分支而不丢失文件

时间:2018-01-15 18:44:47

标签: git merge

我从master分支创建了一个功能分支,而不是(有些工作和)必须删除此分支上的许多文件。现在,我想将更改合并回master,但不会丢失我在功能分支上删除的master上的文件。

简而言之,就是我所做的:

(master)> git checkout -b feature
# deleted many files
> git checkout master
> git merge ??? # how to merge back without losing files

换句话说,当文件存在于功能分支上时,将其合并到主服务器中。在功能分支上删除文件时,不要在master上合并删除操作,但保留文件。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

运行

git merge --no-commit feature

准备合并而不提交它。

然后检查更改(git status)并运行:

git checkout master -- file1 file2 ...

其中file1file2等是您在分支上删除并希望在合并后保留的文件(它们在deleted:的输出中列为git status 。)您也可以一次签出一个文件,或者如果需要,甚至可以从另一个分支中获取。

然后使用git add .暂存刚签出的文件,当您对更改感到满意时,请运行git commit以完成合并。

如果您犯了错误或只想中止合并,您可以运行git merge --abort并重新开始。

merge操作正在进行中,直到您使用git commit成功完成操作或使用git merge --abort中止操作。合并未完成时,某些操作不允许(或失败)。

答案 1 :(得分:0)

  

...必须删除此分支上的许多文件。

如果这是作为一个单独的提交完成而只是删除这些文件,你可以恢复那些/那些提交。