我从master
分支创建了一个功能分支,而不是(有些工作和)必须删除此分支上的许多文件。现在,我想将更改合并回master
,但不会丢失我在功能分支上删除的master
上的文件。
简而言之,就是我所做的:
(master)> git checkout -b feature
# deleted many files
> git checkout master
> git merge ??? # how to merge back without losing files
换句话说,当文件存在于功能分支上时,将其合并到主服务器中。在功能分支上删除文件时,不要在master上合并删除操作,但保留文件。
我该怎么做?
答案 0 :(得分:4)
运行
git merge --no-commit feature
准备合并而不提交它。
然后检查更改(git status
)并运行:
git checkout master -- file1 file2 ...
其中file1
,file2
等是您在分支上删除并希望在合并后保留的文件(它们在deleted:
的输出中列为git status
。)您也可以一次签出一个文件,或者如果需要,甚至可以从另一个分支中获取。
然后使用git add .
暂存刚签出的文件,当您对更改感到满意时,请运行git commit
以完成合并。
如果您犯了错误或只想中止合并,您可以运行git merge --abort
并重新开始。
merge
操作正在进行中,直到您使用git commit
成功完成操作或使用git merge --abort
中止操作。合并未完成时,某些操作不允许(或失败)。
答案 1 :(得分:0)
...必须删除此分支上的许多文件。
如果这是作为一个单独的提交完成而只是删除这些文件,你可以恢复那些/那些提交。