Git:从远程获取

4
这是我的设置:我在家里和学校工作,远程存储在网上。所有3个位置都有三个分支,称为br1、br2和br3。没什么特别的,每个工作站上的每个分支都相同。换句话说,在家中的br1、工作中的br1和远程的br1都对应于相同的分支等等。
现在,当我尝试在家中拉取br2时,会收到一条消息,说明我必须指定需要与之合并的分支。我知道正在发生什么以及如何纠正它,但我想不出为什么会发生这种情况。git不能与同名的分支合并吗?我是否需要为每个分支在配置文件中创建条目?
另外,git rm --cached 和 git reset --mixed 有什么区别?

如果你推送到远程仓库,会怎么样呢? - James Black
你在家里创建了br2并将其推到远程了吗? - aschmid00
@James git 状态报告说我的工作目录是干净的,没有需要推送的内容。它要求我使用 git pull 合并远程更改... 回到原点 : / - kshenoy
@aschmid00 老实说,我不记得每个分支是在哪里创建的了。我只知道最后一次推送到 br2 是在工作中完成的。 - kshenoy
1
git rm --cached 从索引中删除一个或多个文件(计划在提交时删除)。 git reset --soft:“完全不触及索引文件或工作树,…”并且不接受路径参数。你是指 git reset --mixed 吗?其中最大的区别是 rm --cached 计划删除,但 reset --mixed 取消暂存,包括“恢复” rm --cached - torek
显示剩余2条评论
2个回答

2
我认为发生的情况是您在本地创建了分支并将其推送到远程。
在这种情况下,本地分支没有上游分支。
您可以使用以下命令设置上游分支。
git branch --set-upstream foo origin/foo

-u

--set-upstream

对于每个已经更新或成功推送的分支,添加上游(跟踪)引用,用于没有参数的git-pull(1)和其他命令。有关更多信息,请参见git-config(1)中的branch..merge。


1
请注意,--set-upstream 需要一个相当新的 git 版本(1.7 或以上)。此外,请注意,在 push 过程中现在(1.7.4 之后?)有一个 --set-upstream 选项,即您可以一次性推送以创建并设置上游源。 - torek
在$工作中,我经常使用石器时代的工具,有些机器甚至还在使用Python 2.3。 - torek
@aschmid00 我使用git push origin <name>来推送新分支,这样不就可以了吗? - kshenoy
try git push -u origin <name> - aschmid00

0

您不必手动编辑配置文件。我建议您删除该分支并从头开始检出跟踪分支。请注意,确保您没有需要推送的本地更改:

git branch -D br2
git checkout --track origin/br2

如果你使用 --track 选项来检出远程分支,那么当进行推送和拉取操作时,它们将始终被正确地设置。

Magnus,我用相同的方式解决了它。但我不明白为什么首先会出现这个问题。 感谢您提供 --track 的提示。我之前并不知道 :) - kshenoy
使用最新的git版本,您无需显式地跟踪远程分支。如果您检出一个分支,它会自动跟踪远程分支。 - aschmid00
除非配置另有规定,否则默认情况下分支自动设置合并(branch.autosetupmerge)为false,则需要使用--track选项。但是你说得对,默认值为true,如果没有人搞乱设置,应该不会有问题 :) - ralphtheninja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接