git - 你如何让 git 总是从特定的分支中 pull ?

标签 git version-control

我不是 git 大师,但我已经使用它有一段时间了,有几个不同的项目。在每个项目中,我总是git clone [repository],从那时起,我总是可以git pull,当然,只要我没有明显的变化。

最近,我不得不恢复到以前的分支,并使用 git checkout 4f82a29 来完成。当我再次准备 pull 时,我发现我必须将我的分支设置回 master。现在,我不能直接使用 git pull 进行 pull ,而是必须指定 git pull origin master,这很烦人,并向我表明我没有完全了解正在发生的事情。

有什么变化不允许我在不指定 origin master 的情况下直接执行 git pull,我该如何改回来?

更新:

-bash-3.1$ cat config
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[branch "master"]
[remote "origin"]
    url = git@github.com:user/project.git
    fetch = refs/heads/*:refs/remotes/origin/*

更新 2:需要明确的是,我知道我原来的方法可能不正确,但我需要修复此存储库以便我可以再次简单地使用 git pull。目前,git pull 结果:

-bash-3.1$ git pull
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me either.  Please
name which branch you want to merge on the command line and
try again (e.g. 'git pull  ').
See git-pull(1) for details on the refspec.

If you often merge with the same branch, you may want to
configure the following variables in your configuration
file:

    branch.master.remote = 
    branch.master.merge = 
    remote..url = 
    remote..fetch = 

See git-config(1) for details.

我可以告诉 git pull 要 merge 哪个分支,它工作正常,但是 git pull 不能像我的 git checkout< 之前那样工作.

最佳答案

[branch "master"] 下,尝试将以下内容添加到 repo 的 Git 配置文件 (.git/config):

[branch "master"]
    remote = origin
    merge = refs/heads/master

这告诉 Git 2 件事:

  1. 当您在 master 分支上时,默认远程是 origin。
  2. 在 master 分支上使用 git pull 时,没有指定远程和分支,使用默认远程(origin)并 merge 来自远程 master 分支的更改。

不过,我不确定为什么要从您的配置中删除此设置。您可能也必须遵循其他人发布的建议,但这可能有效(或至少有帮助)。

如果你不想手动编辑配置文件,你可以使用命令行工具:

$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master

关于git - 你如何让 git 总是从特定的分支中 pull ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/658885/

相关文章:

git - 如何启用我的 Azure 管道以使用 Git checkout 子模块?

Git 工作流程/部署

git - 使用 git-tfs rcheckin 将 git 提交到 TFS 变更集的一对一映射

java - 软件更新如何工作?

Git SSH key : Two different account for github and gitlab

git - 显示 git log 时忽略 merge 的提交

version-control - 如何在 Bazaar (bzr merge) 中进行忽略空格的合并?

version-control - DVCS 对开发人员有用吗?

Git 从另一个仓库 pull

svn - 如果发生另一个 scm 触发的构建,如何让 Jenkins 取消 scm 触发的构建?