【发布时间】:2020-07-31 14:04:29
【问题描述】:
我有两个远程 git 服务器,一个用于 dev 我推送所有内容,另一个应该仅用于 里程碑。
我想做的是将所有内容提交并推送到开发服务器,并仅推送里程碑 git 上的“主”分支。
现在我在本地有两个文件夹(dev\my_project 和 mile\myproject),一个在 dev 服务器上跟踪,另一个由 milestone 一个跟踪。当我拥有里程碑时,我将源代码复制粘贴到“里程碑”文件夹中,然后提交并推送。
或多或少我的流程是这样的
rem go on the folder tracked on dev
cd %userdir%\dev\myproject
pushd
rem move on master branch
git checkout master
rem copy all my sources on the milestone tracked folder
rmdir /s /q %userdir%\mile\myproject\*
copy %userdir%\dev\sources\* %userdir%\mile\myproject
cd %userdir%\mile\myproject
git add *
git commit -m "milestone commit 123"
git push
我希望不必处理两个本地副本,而是能够仅在里程碑 git 上推送主分支。
【问题讨论】:
-
git push命令推送提交,而不是分支。然后它要求服务器根据您告诉它的名称设置一些分支。所以git push origin br1 br2推送您拥有的任何新的提交,而他们没有,他们需要更新他们的名字br1和br2以匹配您的名字br1和br2。使用git push <remote> <refspec>精确指定要发送的提交以及您希望他们更新的名称。 -
如果您在没有额外参数的情况下运行
git push,则默认操作由您的push.default设置控制。这个push.default的默认值在 Git 1.9 及更高版本中是simple,但在非常旧的 Git 版本中是matching。matching将获取您可能不想发送的分支名称,因此请考虑升级您的 Git 或将您的push.default设置为simple,如果您的 Git 足够新,可以进行该设置。
标签: git git-branch