git如何远程创建分支

git如何远程创建分支

我不知道有什么办法可以直接在远程创建分支而不需要clone到本地。

背景需求

我的需求是

  1. 直接在远程服务器上创建一个分支
  2. 直接在远程服务器上删除一个分支
    这期间都不需要clone到本地来。

原因是当项目有多个repository的时候其中的部分创建了一个分支,而另一些没有创建;有些操作(可能不合理,但是存在)需要访问所有repository的同一个分支名字,但是部分有部分没有。
那么我就希望给没有的repository也创建一个这样的分支,因为这个创建就是基于其他分支(比如主干),也没有任何代码更新,这样我就不需要把主干分支clone到本地,而直接在远程创建分支即可。

遗憾的是一直没有找到这样的办法。

请赐教 :-)

替代办法

下面的办法还是要clone代码到本地

  1. 检查远程repository上是否有对应的分支
$ git ls-remote <repositoryURL> <targetbranch>

如果targetbranch存在那么返回分支信息

$ git ls-remote ssh://<gituser>@<gitserver>:<gitport>/<path_to_repository>/<repositoryname>.git <targetbranch>
<hashvalue>        refs/heads/<targetbranch>
$

如果targetbranch不存在那么返回空

$ git ls-remote ssh://<gituser>@<gitserver>:<gitport>/<path_to_repository>/<repositoryname>.git <targetbranch>
$

没有任何输出。

一个简单脚本判断:

# Check whether a branch exist or not in remote
# @param $1 repository URL
# @param $2 branch name
# @return 0   : branch exist
#         1   : branch does not exist
#         255 : error happen
function branchExist() {
  BRANCH=$(git ls-remote $1 $2)
  if [ $? -ne 0 ]; then
     # error happen
     return 255
  fi

  if [ "X${BRANCH}" == "X" ]; then
     # branch does not exist
     return 1
  fi

  # branch exist
  return 0
}
  1. 创建远程分支
$ git clone --depth 1 -b <sourcebranch> ssh://<gituser>@<gitserver>:<gitport>/<path_to_repository>/<repositoryname>.git
$ cd <repositoryname>
$ git checkout -b <targetbranch>
$ git push -u origin <targetbranch>
  1. 删除远程分支
$ git branch -d <targetbranch>
$ git push -u origin --delete <targetbranch>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容