2

因此,我正在与另一个开发人员合作,并希望拉取并推送到远程分支(顺便说一下,这不是远程主控),但我想进行设置,以便当我在我的机器上签出本地分支时,它会从远程分支拉取并推送到远程分支,而无需显式指定它。

我在我的机器上运行了这个命令(假设远程分支称为development并且我创建的本地分支称为dev1):

git branch --track dev1 origin/development

然后检查了我的本地分支dev1,更改了一个文件,暂存它,提交它,然后尝试像这样推送:

git push origin

但后来我收到了这条消息:

Everything up-to-date

在我创建 dev1 并检查后不久,我注意到我的 .git/config 文件中有额外的行:

[branch "dev1"]
    remote = origin
    merge = refs/heads/development

所以问题是我错过了什么?基本上,我希望这样设置,以便每次我检查 dev1 并运行:

git pull origin

它会自动从源/开发中提取,而无需明确指定,并且在我运行时:

git push origin

它会自动推送到原始/开发,而无需明确指定。

另外,当有明显的更改要推送时,为什么它告诉我“一切都是最新的”。

4

1 回答 1

1

正如“ Git push 不会做任何事情(Everything up-to-date) ”中提到的,git push只推送已配置为推送到特定远程分支的本地分支。

由于push.default设置,您dev1的分支知道要什么,而不是推到哪里:

匹配- 推送所有匹配的分支。在两端具有相同名称的所有分支都被认为是匹配的。这是默认设置。

由于您的本地分支与上游分支的名称不同,因此这是您的问题。

设置push.default为跟踪,它将起作用。

跟踪- 将当前分支推送到其上游分支。

git remote show origin然后将列出配置为推送到源的分支,然后应该列出 dev1。

于 2010-12-15T07:17:38.833 回答