需要帮助理解pullt和与sourcetree和bitbucket合并

时间:2018-03-22 07:57:27

标签: git version-control bitbucket atlassian-sourcetree

尝试学习如何使用bitbucket和sourcetree为我正在组中工作的项目设置源代码控制。我可以设置一个存储库并将项目推送到它,但我对其他人试图推动更新时会发生什么感到困惑。如果有人试图推送新的更新并且他们首先执行拉动,那么这对他们的更新究竟做了什么?是否需要最后一次推送并将其与上一次提交合并?另外,合并通常只与单独的分支合并,或者如果存在冲突,您是否将分支与自身合并?几个小时以来一直在研究这个问题,而我只是无法绕过它。

2 个答案:

答案 0 :(得分:0)

要在git git pull之前执行push时直接回答git所做的更改,请参阅以下步骤:

如果开发人员在本地仓库上提交了更改,而其他开发人员在此期间将更改推送到远程仓库。然后,提交历史记录将如下所示(本地仓库已提交CD未推送,远程仓库有EFG在本地回购中不存在):

…---A---B---C---D   master
         \
          E---F---G  origin/master

因此,在将本地更改推送到远程之前,开发人员需要执行git pull(或使用命令git fetchgit merge):

git pull origin master
# Input merge comment (if there has confilcts, need to resolve conflicts firstly)

然后提交历史记录将是:

…---A---B---C---D---M   master
         \         /
          E---F---G  origin/master

推送到远程仓库(git push origin master)后,提交历史记录将为:

…---A---B---C---D---M   master, origin/master
         \         /
          E---F---G  

答案 1 :(得分:0)

我建议你总是用rebase选项拉你的分支。

正如alreay所说,git pull将处理你的两个分支之间的git合并

git pull origin master

…        C---D--------M   master
        /            /
 ---A---B---E---F---G  origin/master

但是如果你使用rebase选项

git pull --rebase origin master

它将从本地分支中删除您的提交,更新它并在原始/主更新后重新应用您的本地提交(在合并提交中清空M

…                     C---D   master
                     /
 ---A---B---E---F---G  origin/master

因此,它使您的历史变得平坦,并使其更容易阅读。