为什么在拉动时总是需要执行“ --set-upstream-to”?

时间:2018-10-05 09:43:29

标签: git git-branch git-pull

我通常必须克隆git repo中没有的远程分支(例如,来自同事)

虽然git push的设置很简单(请参见Why do I need to do `--set-upstream` all the time?) 对于git pull,我没有发现同样的情况。

现在我的工作流程是:

  • 哦,我必须从github的branch123中提取projectABC
  • cd projectABC && git checkout -b branch123
  • git pull

A,我受到欢迎:

  

当前分支没有跟踪信息。请   指定您要合并的分支。参见git-pull(1)   详细信息。

git pull <remote> <branch>
     

如果您希望为此分支机构设置跟踪信息,可以这样做   与:

git branch --set-upstream-to=origin/<branch> branch123

我该如何简化?

4 个答案:

答案 0 :(得分:2)

在使用import {SHOW_PANNEL} from '../actions/pannel/types'; const initialState = { visible: false }; function showPannelReducer(state = initialState, action) { switch (action.type) { case SHOW_PANNEL: return { ...state, visible: action.visible } default: return state } }; export default showPannelReducer; 标志进行结帐时,实际上创建了一个新的本地分支,未链接到任何远程分支。第一次推送新分支时,您可以通过执行-b将其链接到新的远程分支。如果要签出现有分支,只需删除git push -u

答案 1 :(得分:2)

如果您要签出仅以origin/branchName身份存在的分支(因此git branch -l不会列出没有branchName的{​​{1}}),如下所示:

origin

您将创建一个新的本地分支,该分支会自动跟踪git checkout branchName 。 Git还应该通知您:

origin/branchName

使用Branch branchName set up to track remote branch branchName from origin. Switched to a new branch 'branchName' 标志时,还需要添加-b标志以一次性设置跟踪:

-t

仅当您希望本地分支的名称与git checkout -b branchName -t origin/branchName 上的名称不同时,此命令才真正有用。在简单的情况下,只需忽略origin

或者,您可以在第一次推送时使用in @Tobb's answer中提到的-b参数。本质上,这与到普通-u的同名远程分支执行相同的自动映射。

答案 2 :(得分:1)

通常,您会这样做:

git branch -u %remotename%/%branchname%

将%remotename%替换为您设置的远程名称(通常称为“来源”)。将%branchname%替换为远程分支名称。

答案 3 :(得分:0)

这是我想出的:

  • 哦,我必须从github的projectABC中拉出branch123
  • cd projectABC && git checkout -b branch123
  • git track <=这是有趣的一点
  • git pull

在我的.gitconfig中具有以下别名

  track = "!f(){ branch=$(git name-rev --name-only HEAD); cmd=\"git branch --set-upstream-to ${1:-origin}/${2:-$branch} $branch\"; $cmd; }; f"

信用:https://andre.arko.net/2012/05/29/track-remote-git-branches-with-ease/