2

这是我的场景(这是一个非常简单的场景):我在本地创建了一个分支,没有使用--track. 我做了一些提交并像这样推送它:

git push origin test

但是现在我不想origin test每次推送这个分支时都必须输入,所以我想让它跟踪origin/test(或者相反?)。

我怎样才能做到这一点?我试过:

git branch --set-upstream origin/test

它没有用。当我尝试推送时,它说“一切都是最新的”,它似乎创建了一个名为“origin/test”的实际分支,这不是我想要的。

更新:这是.git/config(运行后--set-upstream)的内容:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = git@***.unfuddle.***/***.git
    fetch = +refs/heads/*:refs/remotes/unfuddle/*
    push = refs/heads/master:refs/heads/master
[gui]
    wmstate = normal
    geometry = 1098x644+298+187 207 207
[branch "test"]
    remote = origin
    merge = refs/heads/test
4

4 回答 4

6

调用时忘记指定本地分支git branch --set-uptstream

git branch --set-upstream test origin/test

编辑:好的,也许你没有忘记它(因为可以省略最后一个参数),但是你想设置本地分支来跟踪远程分支(manpage git-branch),而不是你做了相反的事情(假设你目前在分行test

git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]

你指定,那个origin/testtrack test

于 2011-04-07T11:30:13.443 回答
1

--set-upstream已被弃用。使用--track--set-upstream-to代替。

git branch --track test origin/test
于 2014-04-02T22:36:48.423 回答
0

试试git push -u origin test

于 2011-04-07T11:26:15.873 回答
0

我最终手动编辑.git/config. 这是它现在的样子:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = git@***.unfuddle.***/***.git
    fetch = +refs/heads/*:refs/remotes/unfuddle/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "test"]
    remote = origin
    merge = refs/heads/test

似乎现在可以工作了。我从另一个项目中获得了示例,在该项目中我使用--track.

我认为问题在于 中的push语句[remote "origin"],我认为这使它总是推动 master 分支。

于 2011-04-08T07:45:24.113 回答