【发布时间】:2012-05-13 20:24:51
【问题描述】:
我正在开发一个名为 sidebar 的远程分支,它是这样创建的(来自我的电脑,而不是远程仓库):
$ git branch sidebar
$ git checkout sidebar
$ git push -u origin sidebar
$ git pull origin sidebar
在侧边栏分支上进行一些提交后,我将其推送到了仓库:
$ git push origin sidebar
现在似乎侧边栏已合并到主控,我不明白为什么:
$ git log --graph
* commit 3830b6e72f4249cd15c7a35e47a2
| Author: me
| Date: Mon Apr 30 16:56:28 2012 +0200
|
| re-build sidebar boxes
|
* commit e97e63b05a522e29d3ca97a509e3652d
|\ Merge: eb1ebfd ed10585
| | Author: me
| | Date: Sat Apr 28 15:54:19 2012 +0200
| |
| | Merge branch 'master' of
| |
| * commit 6495e5bd7ac12364a4a12389f58
| | Author: misterX
| | Date: Sat Apr 28 03:46:58 2012 +0200
| |
| | FB: add friend list with statistics
| |
* | commit eb89c0bbb5516b1ed795b9fc958
|/ Author: me
| Date: Sat Apr 28 15:54:08 2012 +0200
|
| add product img lens icon
你知道发生了什么吗?我哪里错了?
编辑:也许以下内容会有所帮助
$ git remote show origin
Password:
* remote origin
Fetch URL: user@repo
Push URL: user@repo
HEAD branch: master
Remote branches:
master tracked
sidebar tracked
Local branches configured for 'git pull':
master merges with remote master
sidebar merges with remote sidebar
Local refs configured for 'git push':
master pushes to master (local out of date)
sidebar pushes to sidebar (fast-forwardable)
【问题讨论】:
-
看起来像
$ git pull origin sidebar而不是$ git pull origin master,这本质上是“获取 master 并将其合并到当前分支中”。 -
我已经检查过了。我的 bash 历史说
git pull origin sidebar,没有主人 -
你知道,从技术上讲,如果有人用“master”强行替换远程仓库中的分支“sidebar”,然后再将其恢复回来,理论上,如果你碰巧拉动,你可以获得这个看起来的历史记录从那个“侧边栏”分支,而它被替换。但是“master”这个名字写在提交消息中,所以它真的是“master”,而不是别的东西。我并不是说合并 master 的人一定是你,但 Git 的提交哈希可以确定某些事情。 ;-)
-
感谢您的帮助,我正试图了解为什么会发生这种情况。我编辑了我的帖子。也许可以帮助?
-
不幸的是,这并没有给图片增加任何有趣的东西:1)你有非常标准的推/拉设置; 2) remote 在 master 上的提交比你多; 3)你在侧边栏上有一些远程没有的提交,但是没有人远程弄乱侧边栏所以你现在推侧边栏,这会导致快进。
标签: git merge branch git-branch