当前分支没有跟踪信息。请指定您要合并的分支

use*_*138 2 git

因此,我使用 Jira 创建了一个分支,并在本地系统上检查了该分支。现在我正在尝试在本地系统上执行 git pull 但收到此消息

There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=origin/<branch> feature/branch-name                                                                                                                                        mark-violation
Run Code Online (Sandbox Code Playgroud)

我需要做什么?我看过这个链接,但我不清楚。

mat*_*att 7

这个故事中有两个Git。我们将它们称为 Jira 的 Git 和您本地的 Git。

\n
    \n
  • 当您在 Jira 的 Git 上创建分支时,您就是这样做的:在 Jira 的 Git 上创建了一个分支。

    \n
  • \n
  • 当您说git checkout -b branch-name在本地 Git 上时,您在本地 Git 上创建了一个分支。

    \n
  • \n
\n

这两个分支根本没有任何关系。他们可能碰巧有相同的名字,但这只是巧合;他们彼此一无所知。

\n

你甚至没有告诉我们你本地的 Git 和 Jira 的 Git 之间是否有任何关系。但是,如果存在 \xe2\x80\x94 如果您通过克隆 Jira 的 Git 创建了本地 Git,或者您已将 Jira 的 Git 作为远程 \xe2\x80\x94 连接到本地 Git,那么正确的过程git fetch是在本地 Git 中创建与 Jira 的 Git 绑定的远程跟踪分支。然后,您可以将其中之一作为本地分支机构进行检查。

\n

如果因为您已经创建了本地分支而为时已晚,则可以通过以下git fetch命令将其绑定到远程跟踪分支:

\n
git branch -u origin/branchname branchname\n
Run Code Online (Sandbox Code Playgroud)\n

意思-u是“set-upstream”,并将本地分支branchname与远程跟踪分支联系起来origin/branchname(假设这origin是指定 Jira 的 Git 的远程本地名称)。请注意,这正是Git 告诉你应该做的事情

\n
git branch --set-upstream-to=origin/<branch> feature/branch-name\n
Run Code Online (Sandbox Code Playgroud)\n

你本来可以这么做,现在你就到家了。

\n
\n

请注意,这个故事实际上有三个分支:Jira Git 上的分支、本地 Git 中的远程跟踪分支以及本地 Git 中的本地分支。Jira Git 上的分支和本地 Git 中的分支通常具有相同的名称,比方说branchname;本地 Git 中的远程跟踪分支通常会在该名称前面加上原始名称,比方说origin/branchname

\n

因此,粗略地说,远程跟踪分支的目的是充当其他两个分支之间的桥梁:

\n
    \n
  • 当您说 时git fetch,您将 Jira 的 Git 分支同步到本地远程跟踪分支。因此,您通常不需要告诉 Git 如何将远程跟踪分支绑定到 Jira Git;它已经知道如何做到这一点,因为当你说 时它就已经为你设置好了git fetch

    \n
  • \n
  • 当您说git checkout分支名称恰好与远程跟踪分支的名称相匹配时,Git 会假设您真正的意思是“创建一个本地分支并将其与同名的远程跟踪分支关联起来”。所以它就这么做了。这就是为什么最初先获取然后结帐是正确的做法。相反,您手动创建了一个本地分支,因此它与远程跟踪分支没有关系。

    \n
  • \n
  • 当您说 时git pull,您将 Jira Git 分支同步到本地远程跟踪分支到相应的本地分支。第一步,涉及远程跟踪分支,只是制作一个副本;但第二步(默认情况下)远程跟踪分支合并到本地分支。

    \n
  • \n
  • 当您说 时git push,您会以另一种方式同步:本地分支合并到远程跟踪分支,然后远程跟踪分支合并到相应的 Jira Git 分支。这些合并保证是快进合并,因为如果不是快进合并,Git 会拒绝;你可以通过使用“武力”来克服这种阻力。如果你说git push当本地分支没有绑定到远程跟踪分支时,你可以通过添加属性来绑定它-ugit push -u origin branchname这是对本地创建的分支进行首次推送的常用方法,之后就不需要了为该-u分支,因为关联已经建立。

    \n
  • \n
\n

我已经大大简化了,但希望这足以让您对通常发生的事情有一个更准确的印象。

\n