【发布时间】:2012-12-25 21:07:06
【问题描述】:
我在本地分支上处理了一些代码,然后使用以下命令将其推送到远程测试存储库:
git push origin fix_vouchers:fix_vouchers
我想更改该远程存储库上的活动分支,以便其他开发人员可以测试此代码。我可以在本地环境中执行此操作吗?
【问题讨论】:
标签: git git-branch git-remote
我在本地分支上处理了一些代码,然后使用以下命令将其推送到远程测试存储库:
git push origin fix_vouchers:fix_vouchers
我想更改该远程存储库上的活动分支,以便其他开发人员可以测试此代码。我可以在本地环境中执行此操作吗?
【问题讨论】:
标签: git git-branch git-remote
如果远程存储库只是一个共享点,一个裸存储库,那么您最好只将具有代码的分支传达给其他开发人员。
在稍后的评论中,您暗示远程存储库是作为网站的结帐。您应该注意,即使您推送到当前活动的分支,推送也不会自动检查该分支的 HEAD。
如果你对远程机器没有任何 shell 访问权限,我认为不可能做你想做的事。如果你在那里有任何影响,你可以要求设置一个 post-receive 挂钩来检查新分支。
当然,如果您有 ssh 访问权限,只需
ssh remote.net "cd /path/to/repo; checkout fix_vouchers"
【讨论】:
不,您不能使用本地命令在远程裸存储库上设置活动分支。
活动分支是 HEAD 指向的分支。这是git的一些命令视图作为仓库默认分支的分支,比如git clone <url> <name>会默认签出默认分支。
如果你有远程仓库的命令行访问权限,git symbolic-ref 命令可以用来设置哪个分支是默认的——参见:Setting the default git branch in a bare repository。
也就是说,一旦签出,任何特定分支都没有什么特别之处。任何分支都可以与其他开发人员共享,方法是让他们创建一个绑定到远程分支的分支,特别是使用git checkout -b <branch> 命令,其中是您要与他们共享的远程分支的名称。这将在其本地存储库上创建一个分支,该分支将针对远程分支进行跟踪。
【讨论】:
我的观点。 远程中没有所谓的活动分支。 分支是否处于活动状态由您决定。
来到你的场景。 您可以将一个新分支推送到远程,称为 releaseCandidate 或 release 或 devBranch。 然后告诉大家把它用作测试/开发分支。
但如果您的问题是其他开发人员正在使用某些特定脚本进行结帐,您可能需要更改该脚本。
【讨论】: