首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >git:定期推送基础分支的更好替代方案

git:定期推送基础分支的更好替代方案
EN

Stack Overflow用户
提问于 2012-10-05 17:15:38
回答 2查看 384关注 0票数 2

我有一个网站的git存储库,其中的主分支代表产品代码。我被要求建立一个‘沙盒’版本的网站,让系统的潜在用户进行实验,这样他们就不必在生产系统中这样做。

因为站点的沙箱版本需要清楚地标记为这样的版本,并且禁用了一些功能,所以我创建了一个沙箱分支(基于master),并在那里进行了一些提交,以添加警告消息等。

然后,我将两个分支都推到上游,在web服务器上,我将每个分支都签出到一个单独的目录中-一个用于生产,另一个用于沙箱。

这很好用,但是当我想要写更多的代码时,问题就来了。一旦我将代码提交到主分支,它将在生产系统中更新,但沙箱将看不到新代码。因此,我将沙箱分支重新设置为master,以便沙箱的提交始终位于生产的顶部。但当然,一旦我这样做了,我就不能再往上游推沙箱分支了,因为它不再是快进了。我必须登录到git服务器,切换分支,执行软重置,然后重做推送。

当然有更好的方式用git来做这件事了吧?我真正需要的是在当前签出的分支上一致地应用一些提交的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-20 03:46:01

您可以使用git push remote +branch进行非快进推流。但是,接收git存储库可以配置为拒绝这些内容。

但是,如果您对分支的旧版本进行了编辑,但将重新构建的版本推送到上游,则可能会遇到一些小问题。解决此问题的一种方法是:

代码语言:javascript
运行
复制
# you are on branch X and origin/X has been force-updated
git branch X-tmp   # keep a reference to your new commits
git fetch origin
git reset --hard origin/X   # now X is the same as origin/X

# now you have two options
# option 1: move the new commits from X-tmp to X by cherry-picking
# them one-by-one
git cherry-pick abc123
git cherry-pick def456

# option 2: this rebase should do the right thing and detect the equivalent
# commits in X and X-tmp
git checkout X-tmp
git rebase X
票数 1
EN

Stack Overflow用户

发布于 2012-10-06 02:47:46

我会以不同的方式实现这一点,在需要的情况下,两个代码路径都存在于master分支中。

例如:使用一些配置文件(不受版本控制),您可以切换到其他代码路径。或者一些环境变量--任何最适合你的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12743164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档