Ank*_*kur 27 git workflow git-merge
我有一个包含两个分支的存储库:live和stage.存储库包含基于Web的应用程序的代码.我想为舞台和现场分支维护两个不同的.htaccess文件,但仍然保持它们的版本控制,因为服务舞台网站的性质有点不同(例如,现在,我希望缓存定时不同).
我是git的新手,所以可能有一个简单的解释,但我想有一个工作流程,当我在现场和我拉变化(简单git merge stage
)时,我没有覆盖现有的.htaccess在现场科.有没有办法配置这个?我在git中错过了一些重要的概念吗?
同样地,还有一大块(但可能很多).html文件,我想跟踪变化但不将它们合并回实时.为了清楚起见,我希望live和stage能够跟踪这些文件中的更改,但知道在进行合并时不要合并这些特定的更改.
Ank*_*kur 34
我找到了关于Stack Overflow的另一个问题的答案,信用转到fcurella:
假设您要排除该文件
config.php
在分支A上:
.gitattributes
使用以下行创建在同一目录中命名的文件:config.php merge=ours
.这告诉git在合并文件时使用什么策略.在这种情况下,它始终保持您的版本,即.您正在合并的分支上的版本.添加
.gitattributes
文件并提交在分支B上:重复步骤1-2
现在尝试合并.您的文件应保持不变.
这似乎是一个更具伸缩性的解决方案
Ankur,试试这个:
假设您已在实时分支上签出,请运行:
git merge --no-commit --no-ff stage
Run Code Online (Sandbox Code Playgroud)
这将合并两个分支,但不会进行新的提交,将失败并将这些更改保留在索引文件和工作目录中.现在,既然您希望.htaccess
在实时分支上保持文件的完整性,您可以从实时结帐这个文件:
git checkout live .htaccess
Run Code Online (Sandbox Code Playgroud)
现在,您的工作树具有舞台上的所有更改.htaccess
,但是您可以完成合并提交:
git commit -m "Pulled changes from stage" -a
Run Code Online (Sandbox Code Playgroud)