是否可以创建跟踪不存在的远程的分支

Alm*_*mad 8 git scripting automation

我想以这样的方式签出一个分支,以便随后git push将它以相同的名称正确地推送到原点.

当远程分支已经存在时,这很容易

git checkout -b branch origin/branch
Run Code Online (Sandbox Code Playgroud)

但是,即使origin/branch还没有,我也愿意这样做.

Kin*_*nch 8

只需创建一个本地分支

git checkout -b branch
Run Code Online (Sandbox Code Playgroud)

远程存储库对您的本地分支一无所知,因此您必须在第一次"手动"推送它

git push origin branch
Run Code Online (Sandbox Code Playgroud)

现在,如果您希望本地存储库让它使用远程存储库跟踪您的本地分支

git branch --set-upstream branch origin/branch
Run Code Online (Sandbox Code Playgroud)

  • 我想要的是避免“手动”推动,因为我不想修改我的脚本;) (2认同)

小智 5

没有简单的方法,AFAIK。

这是我目前的尝试。这是一个 bash 函数,它设置一个新的本地分支,以便git push从该分支推送到具有相同名称的新远程分支。

function featurebranch() {
  if [ "$@" != "" ]; then
    git branch "$@" origin/master
    git checkout "$@"
    git config branch."$@".remote origin
    git config branch."$@".merge refs/heads/"$@"
    git config branch."$@".rebase true
  fi
}
Run Code Online (Sandbox Code Playgroud)

它必须使用git config,因为使用git push -ugit branch --trackgit branch --set-upstream-to命令都涉及实际存在的远程分支。

如果有任何 git 大师检查并指出任何问题,我将不胜感激。塔。;-)