如何配置Git在使用“git pull”时自动从当前分支拉出?

时间:2013-10-09 18:34:29

标签: git branch config

使用我们当前的设置,你总是必须在拉动时输入分支名称(即:git pull origin feature-branch“。我已经犯了从一个分支拉到另一个分支的错误,意外地将两个分支与两个分支合并非常不同的版本。我想通过配置Git来避免这种情况,这样只需输入git pull就会拉出你当前的分支。

我该怎么做?

6 个答案:

答案 0 :(得分:23)

我也是一个只是打git pull并获得所有魔力的粉丝。

您有两个选择:

1) git config --global branch.autoSetupMerge always

这将确保您是否结帐远程分支或创建新分支;跟踪信息将由git自动处理。然后你就可以了

git clone <some_repo>
git checkout -b <new_branch>
git push
git pull

请注意,为了push没有更多关键字,您还需要设置推送选项。我已将其设置为matching,但每个人都对此有偏好。 (git config --global push.default matching

更多信息: autosetupmerge默认为true。当设置为true时,这允许git在您签出远程的现有分支时执行跟踪。例如,如果您执行git checkout <branch>,git将处理跟踪信息,以便您可以在该分支上执行git pull但是,它不会在您使用-b选项创建的分支上执行此操作。将autosetupmerge设置为always可确保git始终处理跟踪信息。

2)签出新分支时,您需要专门设置分支从原点(也就是跟踪)

git checkout -b <branch> --track <remote>/<branch>

当分支是瞬态时,我发现这不太有用。如果您很少创建新分支,则应该使用此分支。但是,如果你像我一样,只有 master 分支是持久的,并且每个功能都有自己的全新分支,那么我发现选项1更有用。

请注意,您无需进行git配置--global。您可以在那里简单地编写--local,并且仅对该存储库具有该设置。

答案 1 :(得分:12)

您可以创建跟踪分支。来自Git Book(http://git-scm.com/book/en/Git-Branching-Remote-Branches):

  

克隆存储库时,它通常会自动创建一个存储库   跟踪master的{​​{1}}分支。这就是为什么origin/master和   git push开箱即用,没有其他论据。但是,你   如果您愿意,可以设置其他跟踪分支 - 不跟踪的分支   git pull上的分支,不跟踪origin分支。这很简单   case就是你刚看到,运行的例子   master。如果你有Git    版本1.6.2或更高版本,您还可以使用git checkout -b [branch] [remotename]/[branch]简写:

--track

答案 2 :(得分:10)

这对我有用:

git branch --set-upstream-to=origin/branch_name branch_name

执行此操作后,我可以使用以下语法:

git checkout branch_name
git pull --rebase
git push

答案 3 :(得分:4)

如果git push配置为自动计算远程分支名称,则可以传递-u,它也会自动设置跟踪分支。

设置git push以使用具有相同名称的远程分支:

git config --global push.default current`

来自-u的{​​{1}}选项的说明:

git help push

假设您当前的分支是-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).

<branch_name>

答案 4 :(得分:-3)

此外,如果您要进入.gitconfig文件并稍作更改,则可以将其设置为自动假设您要在任何项目中推送/拉出当前分支。所以在你想要的任何编辑器中打开.gitconfig。然后找到[push]选项,将其设置为default=simple,就像下面一样。

[push]
        default = simple
[pull]
        default = simple
像那样。将拉动变为简单。两者现在可能都是现在的。基本上它与我之前发布的选项完全相同:

git config --global pull.default current

但我发现这是一个更好的选择。因此,您可以使用同一行,但将current更改为simple

答案 5 :(得分:-8)

此命令应配置git以拉到当前分支..在终端/ iTerm中运行时。

git config --global pull.default current

只需将“pull”更改为“push”即可通过“git push”获得相同的效果。