git checkout标签,git pull在分支中失败

ale*_*sko 132 git git-pull git-checkout

我克隆了一个git存储库,然后签出了一个标签:

# git checkout 2.4.33 -b my_branch
Run Code Online (Sandbox Code Playgroud)

这没关系,但是当我尝试git pull在我的分支中运行时,git会吐出这个错误:

当前分支没有跟踪信息.请指定要合并的分支.有关详细信息,请参阅git-pull(1)

git pull <remote> <branch>
Run Code Online (Sandbox Code Playgroud)

如果您希望为此分支设置跟踪信息,可以使用以下命令:

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

我想git pull只更新主分支并保留当前分支(无论如何它都是标记).这样的事情可能吗?

我需要这个的原因是我有一个自动脚本,总是git拉存储库,当然因为上面的错误而失败..

Vin*_*Wen 114

编辑:对于较新版本的Git,--set-upstream master已被弃用,您应该使用--set-upstream-to:

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

根据提示,您可以运行:

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

之后,您只需运行git pull即可更新代码.

  • 这解决了这个问题.但我仍然需要了解我的主分支如何丢失对原点的引用.我在一个分支上做了'git checkout master`.我不能做`git pull`因为对原点的引用丢失了.现在它有效.谢谢! (5认同)

小智 90

我有同样的问题,并使用此命令修复它:

$ git push -u origin master
Run Code Online (Sandbox Code Playgroud)

从帮助文件中,-u基本上设置了pulls的默认值:

-u, --set-upstream`

  For every branch that is up to date or successfully pushed, add 
  upstream (tracking) reference, used by argument-less git-pull(1) and
  other commands. For more information, see branch.<name>.merge in 
  git-config(1).
Run Code Online (Sandbox Code Playgroud)


nav*_*ins 48

试试这些命令:

git pull origin master
git push -u origin master
Run Code Online (Sandbox Code Playgroud)


cfe*_*ann 7

使用切换回主分支

$ git checkout master
Run Code Online (Sandbox Code Playgroud)

然后运行该git pull操作

$ git pull origin/master
Run Code Online (Sandbox Code Playgroud)

之后,您可以my_branch再次切换回您的状态.

  • 这正是我想要避免的.我想知道是否有"官方"方式来做到这一点. (6认同)

Cas*_*sey 5

@alesko:只有git pull在结账后my_branch才能更新master分支.
因为git pull也会合并到当前分支 - >在你的场景中my_branch

@Simon:那也会推动.这是为什么?

$ git branch -u origin/master
Branch master set up to track remote branch master from origin.
Run Code Online (Sandbox Code Playgroud)

并根据文件:

-u <upstream>
  Set up <branchname>'s tracking information so <upstream> is considered  
  <branchname>'s upstream branch. If no <branchname> is specified,  
  then it defaults to the current branch.
Run Code Online (Sandbox Code Playgroud)