我是Git的新手并且还在了解它。我想将我的本地分支提交推送到远程。我有
Task1004
并完成了一些工作,get fetch
和git pull origin development
git rebase development
。现在我想推送我的更改但是,当我使用git log
时,我会看到其他开发人员在分支development
上推送的所有其他提交;例如,我的一个提交和我的合作者提交的3个提交。
当我跑步时
git push origin Task1004
所有4次提交都会推送到Task1004
,稍后会与development
合并。
这是什么原因,我应该怎么做只推送我的提交?
答案 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}}