我目前正在开发一个具有不同功能的项目,并且为每个功能创建了一个不同的分支。
我的所有文件当前都在主文件中。但是每次创建新分支时,我都会删除所有文件,并只在这些分支上保留与功能相关的文件。
我的问题是:如何在不实际丢弃所有其他文件的情况下将功能分支合并到master分支中?
例如:Master分支具有文件login.html,menu.html和contact.html Feature分支仅具有feature.html文件。
在分支主管上,当我执行
git合并功能
所有文件都从master分支中删除,仅保留feature.html,但我希望所有文件都在master分支中,包括feature.html。
答案 0 :(得分:2)
您不应该不要从新分支上的项目中删除文件...但是无论如何,让我们假设由于某种原因这是必须的。如果我最终要合并master上的分支,那么我可能会做一些技巧来避免出现此问题……但这需要一些额外的工作。我将在新分支的第一次提交时删除文件,并且对该版本不做任何其他操作。然后,当我想合并回master时,我不仅会合并,而且会在删除文件的地方选择删除(或重新设置基准)丢弃提交,然后将重新组合/选择樱桃的分支合并。 >
让我们假设我从master创建了feature1分支,并在那里进行了3次修订...类似
git checkout -b feature1 master
git rm index.html blahblah.html # delete the files I don't want to keep on the branch
git commit -m "Removing the files I don't want"
# work
git commit -m "First real revision of feature 1"
# more work
git commit -m "Second revision of feature 1"
在这一点上,我准备合并到主服务器中……然后,我将不只是合并功能部件1,因为那样会删除文件,因为我是在功能部件1的第一个修订版上这样做的,对吗?放弃第一个修订版,然后合并到母版中,这可以相对容易地完成。
git checkout --detach master # go back to master
git cherry-pick feature1~2..feature1 # only cherry-pick the last 2 revisions
git checkout master # go back to master again
git merge --no-ff HEAD@{1} -m "Merging feature 1" # merge rebased branch
那应该做。但是我不认为您应该删除这些文件。