尝试学习如何使用bitbucket和sourcetree为我正在组中工作的项目设置源代码控制。我可以设置一个存储库并将项目推送到它,但我对其他人试图推动更新时会发生什么感到困惑。如果有人试图推送新的更新并且他们首先执行拉动,那么这对他们的更新究竟做了什么?是否需要最后一次推送并将其与上一次提交合并?另外,合并通常只与单独的分支合并,或者如果存在冲突,您是否将分支与自身合并?几个小时以来一直在研究这个问题,而我只是无法绕过它。
答案 0 :(得分:0)
要在git git pull
之前执行push
时直接回答git所做的更改,请参阅以下步骤:
如果开发人员在本地仓库上提交了更改,而其他开发人员在此期间将更改推送到远程仓库。然后,提交历史记录将如下所示(本地仓库已提交C
和D
未推送,远程仓库有E
,F
和G
在本地回购中不存在):
…---A---B---C---D master
\
E---F---G origin/master
因此,在将本地更改推送到远程之前,开发人员需要执行git pull
(或使用命令git fetch
和git 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
因此,它使您的历史变得平坦,并使其更容易阅读。