我的合作者的提交是如何进入我的分支机构的?

时间:2014-08-22 20:09:58

标签: git version-control git-branch git-push git-commit

我是Git的新手并且还在了解它。我想将我的本地分支提交推送到远程。我有

  1. 创建了一个本地分支Task1004并完成了一些工作,
  2. 提交了所有更改,
  3. 运行get fetchgit pull origin development
  4. 运行git rebase development
  5. 现在我想推送我的更改但是,当我使用git log时,我会看到其他开发人员在分支development上推送的所有其他提交;例如,我的一个提交和我的合作者提交的3个提交。

    当我跑步时

    git push origin Task1004
    

    所有4次提交都会推送到Task1004,稍后会与development合并。

    这是什么原因,我应该怎么做只推送我的提交?

1 个答案:

答案 0 :(得分:3)

那是因为您将Task1004重新定位为development。如果您将Task1004分支机构重新定位为development(或将其与development合并),则您的协作者会将其归结为development。承诺将成为你分支历史的一部分;没有办法(见下面的详细解释)。如果您不希望这种情况发生,请不要改变或与development合并。

另一方面,你为什么不呢?与一个比你目前正在进行的工作更稳定的远程分支保持同步是最好的做法。


这是对发生的事情的重建。为了简明起见,我将致电A [HEAD,dev,origin/dev] 分支" dev"让我们假设,在开始时,您的回购历史看起来像这样:

Task1004

创建并签出名为A [HEAD,Task1004,dev,origin/dev] 的分支后,您得到了

A [dev,origin/dev]
 \ 
  B [HEAD,Task1004]

在您做了一些工作,进行了更改并提交后,您的回购历史记录如下:

dev

然后拉出(获取+合并)A -- C -- D -- E [dev,origin/dev] \ B [HEAD,Task1004] 分支,在此期间,您的协作者已经创建了一些提交。你的回购然后看起来像那样:

Task1004

然后,您将dev重新定位到A -- C -- D -- E [dev,origin/dev] \ B' [HEAD,Task1004] ,最后以

结尾
git rebase

现在,由于Task1004,协作者(C,D和E)的提交成为分支Task1004的祖先的一部分。因此,这些提交显示在该分支的日志中是正常的。

要完成,您将A -- C -- D -- E [dev,origin/dev] \ B' [HEAD,Task1004,origin/Task1004] 分支推送到远程,最后以

结束
{{1}}