1

我正在开发一个名为 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)
4

1 回答 1

0

该 gitlog 表明发生了以下情况:

  • 作者 misterX 做了一个提交(在 2012 年 4 月 28 日星期六 03:46:58 +0200)并在提交 eb89c0bbb5516b1ed795b9fc958(2012 年 4 月 28 日星期六 15:54:08 +0200)之前的最后一次拉动之后推送它。这导致了一个分叉,因为您的提交和来自 misterX 的提交都是基于之前的提交
  • git pull在提交后的 11 秒内做了 a。Git 非常聪明,此时注意到侧边栏分支的本地头部与远程侧边栏头部仅在一次提交中不同,并且由于没有发生合并冲突,因此默默地合并了提交。这是完全正常的行为,除了声称这发生在分支主机上的消息。您使用的 git 版本存在错误,或者您git checkout master在某些时候不小心切换到 master via - 检查输出git branch

在一个侧节点上,如果您不想要这种合并行为,您可以改用git pull --rebase它,它将尝试将您的所有提交重新设置在自上次拉取以来其他人推送的提交之上。这样一来,历史看起来会更清晰,尽管提交日期可能会暗示有人经历过时间旅行……

于 2013-08-21T14:45:54.137 回答