【问题标题】:Configure git push destination branch name different from the local name配置与本地名称不同的 git push 目标分支名称
【发布时间】:2016-12-07 20:42:14
【问题描述】:

我正在使用 Gerrit,当我推送提交时,我使用语法 git push origin master:/refs/for/master

如果我的当前分支是master,我想将 Git 配置为自动将我的当前分支推送到 refs/for/master。我的主张是能够继续使用git push 推送到 Gerrit 审查服务器而不是 Git 服务器。

我的配置文件

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@GitServer:/myrepo
[branch "master"]
        remote = origin
        merge = refs/head/master
[url "ssh://user@GerritServer:29418/myrepo.git"]
  pushInsteadOf = git@GitServer:/myrepo

注意: git 存储库不是 Gerrit 处理的,这就是为什么我使用选项 pushInsteadOf 推送到 Gerrit 服务器。

【问题讨论】:

  • 我不太明白。如果您只是希望能够编写git push 而不是git push origin master:refs/for/master,那么您只需将push = +refs/heads/*:refs/for/* 添加到[remote "origin"] 下的git 配置中
  • 这也许可以用git branch --set-upstream my_branch origin/my_branch 来完成,其中my_branch 是您的本地分支,origin/my_branch 是您的远程分支
  • @Dunno ,我不想为我的项目的任何分支推送到refs/for/*(因为在 Gerrit 上只设置了 master 分支)。我只希望master 分支受到影响。我正在寻找在[branch "master"] 部分添加关键词。如果我没有其他解决方案,我会接受它。
  • @e.doroskevic,这会影响拉到吗?这不适合我的情况
  • 所以如果你是master,你想推到refs/for/master,在其他情况下推到上游分支?

标签: git gerrit git-push git-config


【解决方案1】:

首先为master设置上游分支:

git push -u origin master:refs/for/master

然后设置默认推送策略为upstream:

git config push.default upstream

有了这个设置,每当你写 git push 时,git 都会检查你当前分支的上游分支并推送到它。这也意味着您必须为将来要推送的所有分支指定上游分支

设置上游分支不影响拉取。其实这就是它被称为上游的原因,过去它就像在拉动中一样被称为跟踪,它引起了很多混乱。 Read on in the related commit message

Git push: set target for branch 重复

【讨论】:

  • 我必须在配置文件中手动更改 [branch "master"] 部分下的 merge = refs/for/master 行以使其正常工作。
猜你喜欢
  • 2015-04-20
  • 1970-01-01
  • 2019-01-09
  • 1970-01-01
  • 2017-11-03
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多