我有两个分支,假设是A和B
A是将用于生产的主分支,B是我用于在本地测试的另一个分支。所以我正在使用本地数据库进行分支B,并且在发送电子邮件时我发送给自己,因为它应该我在本地测试时不会发送给客人。
所以我有一个名为booking_confirmation.cs的文件,当我在本地测试时,电子邮件将是我的,当我切换到主分支时,它将是实时的访客电子邮件。
所以我除了电子邮件部分之外做了一些改变,我希望电子邮件是一样的,所以每次切换分支时我都不会改变。现在我的问题是我只需要其他更改我在文件的分支B中制作,而不在电子邮件中进行任何切换。
我尝试的是
我检查了主分支以确保它正在使用
git checkout A
然后我在分支A中检查了分支B中的特定文件,所以我尝试了
git checkout B booking_confirmation.cs
如果文件中没有冲突我将要合并git auto合并它没有任何问题但是如果有冲突我得到以下错误
- 不是我们可以合并的东西
有没有办法合并文件,以便我可以选择/合并我在主分支中需要的文件的哪一部分。任何帮助都将非常感激。
提前致谢!
答案 0 :(得分:0)
所以我有一个名为booking_confirmation.cs的文件,当我在本地测试时,电子邮件将是我的,当我切换到主分支时,它将是实时的访客电子邮件。
嗯......这是一个很好的机会让您的代码对环境变化更加健壮(比如prod与测试)
所述代码可以有一个固定值...除非设置了环境变量,在这种情况下,它将把电子邮件称为环境变量。
由于与配置相关,请参阅" The Twelve-Factor App: III. Config"。
这样可以避免全部" git checkout-保留一行"问题。
您保留一个相同的代码,但只在执行期间通过环境变量覆盖一个值。
但是如果你必须通过Git管理那一行,你也可以设置content filter driver,在结账时可以评估正在检出的分支并在源文件中输入正确的值。
(来自Git Pro Book):" Customizing Git - Git Attributes: Keyword Expansion")
smudge
脚本将是一个简单的sed
,将一行(在booking_confirmation.cs
中)替换为使用正确的值声明电子邮件地址。
答案 1 :(得分:0)
您可以使用交互窗口通过手动管理合并配置/结果来合并文件booking_confirmation.cs:
git checkout A
git checkout --patch B booking_confirmation.cs
然后您可以手动处理文件的合并结果。例如输入y
以应用更改,输入e
以手动编辑更改等。