我在一个案例中与 git 发生了争执。我想在 GitHub 存储库上跟踪我的项目,有两个分支 main 和 dev。但是,有两个文件,我不想在分支之间合并时更改它们,因为这些文件保留特定于分支的信息(例如连接字符串)。
我逐步遵循以下策略:
1。克隆远程存储库
远程存储库上只有 main 分支。
2。配置合并驱动程序
git config --global merge.ours.driver true
git config merge.ours.driver true
3.根文件夹添加.gitattributes文件,填写如下
echo 'Project/appsettings.json merge=ours' >> .gitattributes
echo 'Project/Program.cs merge=ours' >> .gitattributes
4。提交并推送 .gitattributes 到主分支
git add .gitattributes
git commit -m ".gitattributes added"
git push origin main
5。签出 dev 分支并编辑文件
git checkout -b dev
之后,我更改了 .gitattributes 中这两个文件以及其他一些文件中的连接字符串和其他特定于分支的信息。然后,我提交并将更改推送到远程 dev 分支。
6。再次检出主分支并将 dev 合并到 main
现在,我希望除了 .gitattributes 中的文件之外,所有文件都需要合并。为此,我使用了多种选择。在执行以下命令后,所有编辑的文件都将被更改。 甚至 .gitattributes 中包含的文件。
git merge dev
以下命令的输出是“‘我们的’策略进行的合并。”。但是,没有任何文件被更改。 即使是未包含在 .gitattributes 中的文件。
git merge -s ours dev
我阅读了很多解决方案,但我无法解决问题并理解问题所在。我非常感谢您在这个问题上的时间和帮助。预先感谢!
因为这些文件保留特定于分支的信息(例如连接字符串)。
我认为你需要重新思考那个,而不是试图让 Git 做你想做的事情。
在特定于分支的文件中具有特定于分支的设置,并告诉您的应用程序根据它检测到自己所在的分支读取特定文件(或更明确地使用例如命令行开关、环境变量等)。