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