有一个带有存储库的项目,其中提交中有配置。我创建了一个分支,dev更改了配置,添加了一个不需要的沙箱文件夹(.sandbox)master。
.sandbox实际的问题是,是否可以在不涉及配置文件和我的文件夹的情况下执行合并?
正如我现在所做的:git merge --no-commit --no-ff我手工扔掉配置.sandbox,然后制作漫画。所以每次......我都用 .gitattribute 来查看path/file merge=ours,但在配置的情况下它们master不会改变,没有合并冲突,驱动程序不起作用。 .gitignore 到文件夹.sandbox也不是一个选项;在分支中dev我想跟踪我在那里更改的内容。我也尝试过使用git update-index --skip-worktree $file,它在合并时很有帮助,但dev我也没有看到分支有任何变化。
我听了@user7860670的建议
我从主存储库中提取了配置。为开发版本创建了一个分支
存储库
项目位于路径/home/myproject, configs - /home/myproject/conf
需要做什么。检索配置更改的历史记录。从配置中清除主存储库的历史记录。
我使用了filter-repo。
wget https://raw.githubusercontent.com/newren/git-filter-repo/main/git-filter-repo历史提取
对于配置文件,平面存储库非常合适(就我而言)。创建它、导航它、提取历史记录。
git clone --bare ./.git ./conf.git(你可以忽略它,也可以将它放在项目之外)git filter-repo --path conf/ --path-rename conf/:(也可以是单独的文件--path conf/1.conf --path-rename conf/1.conf:1.conf --path conf/2.conf --path-rename conf/2.conf:2.conf)准备好。检查:conf.git$
git log清除历史记录
我从主存储库中删除了所有配置痕迹(添加到.gitignore),检查后推送到远程存储库。
以防万一 :myproject$
tar -cf git.tar .git- 不要忘记在最后删除它。git filter-repo --path conf --invert-pathsgit loggit push --force origin master准备好。只有在一切正常之后 :myproject$
rm git.tar使用 cofig
是的,更乏味,但一切都很安全(配置不是我更改的最常见的事情,第一次部署项目时,第二次部署开发版本时)
我创建了一个存储库,连接了一个远程存储库。
git init /home/myproject.conf && cd myproject.confgit remote add origin /home/myproject/conf.git准备好。我采取了所需的分支:myproject.conf$
git pull origin master,更改了一些内容并将其推回。如何获取工作项目中的文件?有两个选项,第一个是复制(为什么还要费心使用远程存储库?为了跟踪更改),第二个是将带有配置的存储库连接到主存储库。
选项 2(您不需要在产品中执行此操作,只需在开发中执行此操作):
git remote add conf-repo /home/myproject/conf.gitgit fetch conf-repogit checkout -b temp-branch conf-repo/master开发版本分支
事实证明这对我的项目来说很舒服
需要一个单独的分支来仅对原始版本的文件进行更改,以便以后在合并时可以方便地使用它们。
如果某些内容发生更改/添加到开发预设中,我会将其合并到工作流程中
新功能已准备好上传到master:
git checkout mastergit merge workflow --no-ff --no-commit当然,在 git satus 中, dev-preset会有更改-它只会显示此分支中的更改,该更改将返回到master
git diff --name-only dev-preset master | xargs git status中的状态查看并检查所有内容更安全,但您可以简化dev-out.sh
或添加到别名