Git合并而不删除当前分支中的文件
我是git新手,正在学习如何使用它将其集成到我的工作流程中。 目前,以下是我的分支模型(基于此站点): 两个常设分支机构: 表示当前生产分支的主分支。 一个开发分支,我认为它的名字很好地表达了:-) 我使用热修复程序来解决问题,热修复程序是从主程序创建的。所以:我想修复hotfix分支上的bug,并将其合并到master和dev中,以使用修复更新我的永久分支(master和dev) 问题是:在Dev分支上,我创建的新文件只在这个分支上(还没有在master上)。跟踪这些文件是因为在此分支上进行了包含这些新文件的提交。 当我将修补程序合并到dev中时,合并会删除dev中不在修补程序中的新文件 所以我的问题是:有没有一种方法可以在不删除Dev中尚未安装修补程序的文件的情况下进行合并Git合并而不删除当前分支中的文件,git,merge,Git,Merge,我是git新手,正在学习如何使用它将其集成到我的工作流程中。 目前,以下是我的分支模型(基于此站点): 两个常设分支机构: 表示当前生产分支的主分支。 一个开发分支,我认为它的名字很好地表达了:-) 我使用热修复程序来解决问题,热修复程序是从主程序创建的。所以:我想修复hotfix分支上的bug,并将其合并到master和dev中,以使用修复更新我的永久分支(master和dev) 问题是:在Dev分支上,我创建的新文件只在这个分支上(还没有在master上)。跟踪这些文件是因为在此分支上进行了
git status
On branch hotfix
nothing to commit, working tree clean
git checkout dev
Switched to branch 'dev'
Your branch is behind 'origin/dev' by 2 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
git merge hotfix
Updating b34835d..458a2cf
Fast-forward
98 files changed, 1 insertion(+), 47534 deletions(-)
delete mode 100644 TG_anc/.htaccess
delete mode 100644 TG_anc/Controleur.php
delete mode 100644 TG_anc/Controleur/Controleur_Ajax.php
delete mode 100644 TG_anc/Controleur/Controleur_Avertissements.php
delete mode 100644 TG_anc/Controleur/Controleur_Commande.php
delete mode 100644 TG_anc/Controleur/Controleur_Intervenants.php
delete mode 100644 TG_anc/Model/Model.php
…等等,所有不在修补程序上的文件都将被删除。
如果我不进行快进合并也是一样的。。。
也许我做错了什么
我试着把文件放在.gitignore中,ti对这个案例没有任何作用
提前感谢 你的假设是错误的。合并另一个不了解文件的分支时,不会删除一个分支中引入的文件。合并合并更改,而不是覆盖更改
git checkout master
git branch hotfix
>file_only_on_master echo jska13
git add file_only_on_master
git commit -m 'adding file to master'
git checkout hotfix
>fix echo 'fix me'
git add fix
git commit -m 'applied very import hotfix'
git checkout master
git merge hotfix
最后,您的主分支将同时包含主分支上的文件file\u only\u
和fix
(以及以前存在的其他文件)
git merge hotfix
,它将选择将主机快进到C,而不是创建新的提交
--no ff
参数以强制创建合并提交。之后,分支将如下所示:除非您主动删除热修复程序分支上的文件(创建分支后使用
git rm
),否则合并分支不会删除任何文件。热修复程序是从master创建的,实际上我删除了不必要的文件。因此,我想这可能是我的问题的根源。如果仔细查看输出,它会说合并修补程序时“快进”,这意味着dev
分支中没有不在hotfix
中的更改。根据master
和dev
的关系,如果文件在master
上删除(但仍存在于dev
)而hotfix
是从master
创建的,然后合并hotfix
也会从master
带来一些变化,这些变化在dev中还没有出现。很难说分支之间的关系。发布git log--oneline--decoration--graph
的输出可以帮助显示,哪些提交是其中的br主持人:这张图很乱,因为我正在学习使用git并做了很多测试…但我确实做了你所描述的。做这张图的好方法是什么?先在开发人员上取消跟踪文件?哦,谢谢你的回答…我要试试,不知道崩溃退出方法。他并没有假设两个文件都存在在合并修补程序后,开发分支上不存在这两个。
A -- B -- C
/-- -- -- M <-master
/ /
A -- B -- C <-hotfix