使用我们当前的设置,你总是必须在拉动时输入分支名称(即:git pull origin feature-branch
“。我已经犯了从一个分支拉到另一个分支的错误,意外地将两个分支与两个分支合并非常不同的版本。我想通过配置Git来避免这种情况,这样只需输入git pull
就会拉出你当前的分支。
我该怎么做?
答案 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”获得相同的效果。