【问题标题】:What does git config do?git config 是做什么的?
【发布时间】:2013-11-24 22:11:15
【问题描述】:

我是 git 新手,我正在通过 tutorial 设置子模块。我正在尝试理解所有命令并挂断下面的行。

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

谁能解释一下 git config 的作用以及如何解释

branch.master.remote
branch.master.merge

https://git.wiki.kernel.org/index.php/GitSubmoduleTutorial

【问题讨论】:

  • 试试git config --help
  • git config 用于查询或设置 git 的配置选项。 git scm book 讨论了您可能感兴趣的常见选项,并且它们都在手册页中进行了讨论(man git-config,与git config --help @RobinGreen 指出的相同)。

标签: git merge branch master git-config


【解决方案1】:

为了能够将上游分支的更改合并到本地分支之一,您需要两条信息: - 上游分支所在的远程。 - 上游分支的名称。

这样,一旦你的目标本地分支被检出,你就可以发出以下命令:

git pull <upstream_remote> <upstream_branch>

进行预期的合并。

最常见的情况,将远程主分支合并到本地主分支,然后是:

git pull origin master

但是一遍又一遍地输入会很烦人。因此,您可以将一些输入内容保存到 git 以记住这两条信息(远程和分支),这样您就可以只输入 git pull

这就是你的git config 命令正在做的事情。请记住,对于您的本地分支 master,需要两条信息:

git config branch.master.remote origin

"当拉入master时,使用远程源"

git config branch.master.merge refs/heads/master

"拉入master时,使用远程的分支master"

如您所见,概念很简单。只是语法有点复杂。 最后两点:

  • refs/heads/master 是远程分支的名称​​远程仓库看到的
  • refs/heads/master 是通常称为 master 的规范形式。我们在配置的某些地方使用规范名称。

最后,作为@VonC sai,我们现在会通过更精致/更简单的命令来做到这一点,但我认为值得知道 git 在幕后做什么,并且 git config 命令在这种情况下很好地暴露了它。

【讨论】:

  • 我不会直接搞乱分支配置,但我同意看看发生了什么很重要,你比我自己的回答更详细一点。 +1
【解决方案2】:

默认情况下,git config 会为你当前的 git repo 修改 local 配置。
(配置分为三级:system, global and local

您提到的 git config branch.master.xxx 是用于为您的本地分支 master 设置 upstream branch,以便您的本地仓库知道从主分支。

That tutorial 很老了,nowadays (1.8.0+), we would use:

git branch -u origin/master master

这将修改相同的配置文件,但您不必了解分支配置语法。

你可以使用git branch查看所有上游分支:

git branch -avv

第一次推送时必须指定上游分支,如“Why do I need to explicitly push a new branch?”中所述。

【讨论】:

  • -avvv?似乎-a 是一个无效选项,除非您指定set-head
  • @LopSae 抱歉,我的意思是git branch,而不是git remote。我已经编辑了答案。
  • 第三个v还有用吗?我知道有-v-vv,但我从未见过第三个。
  • @LopSae 错字已修复。无论如何,第二个之后的任何“v”都会被忽略。
猜你喜欢
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-27
  • 2014-11-18
  • 2017-11-12
相关资源
最近更新 更多