在Github中推送到远程源之前,将我的分支与本地回购中的Master合并



我想知道这方面的最佳实践是什么我从一个远程比特桶回购中克隆了一个回购,并从回购中创建了一个分支,在特定文件夹中创建了.json文件。在我对我的文件感到满意并想推送到原始分支之后,我应该先在我的本地主机上做一个";git合并分支";在我进入我的分支机构之前;git推送原点/分支";?期待任何帮助。还有人告诉我,在推到原始分支之前,我应该做一个";git rebase master";在树枝上那么我应该这样做吗;git rebase master";在我完成了在我的本地回购分支机构中处理文件的工作之后;git pull original/branch";然后做";git rebase master"?

Rebasing和Merging是将两个或多个开发历史组合在一起的两种不同方式。你选择的技术基本上取决于你希望你的分支组合在一起时的样子或你的偏好。(当我说你的时候,这可能包括在同一个代码库中工作的其他人(。

选择一个,最好的开始是文档,这是gitmerge和gitrebase的文档。

让我引用文档中的一些部分,这些部分可能有助于澄清它们的行为:


GIT合并

假设存在下面的历史并且当前分支是"0";"master":

A---B---C topic
/
D---E---F---G master

然后";git合并主题";将重播自主题分支偏离主分支(即e(以来对其所做的更改,直到其当前提交(C(位于主分支之上,并将结果与两个父提交的名称以及用户描述更改的日志消息一起记录在新提交中。

A---B---C topic
/         
D---E---F---G---H master

GIT重建

假设存在下面的历史并且当前分支是"0";主题":

A---B---C topic
/
D---E---F---G master

从这一点开始,以下任一命令的结果:

git rebase mastergit rebase主主题将是:

A'--B'--C' topic
/
D---E---F---G master

注意分支组合后的样子。gitmerge将把多个提交序列合并到一个统一的历史中,Git rebase在另一个基础上重新应用更改。

现在,当您克隆repo并提交更改时,您的本地分支与远程分支会发生分歧。当您准备将新的更改推送到远程分支时,远程分支可能包含与本地分支不同的历史记录。这就是为什么在将本地更改推送到远程之前,您希望更新本地分支以反映在远程分支中所做的更改。为此,您可以使用git fetch或git pull,具体取决于您要完成的任务。默认情况下,当您执行git pull时,它将执行git fetch,然后执行git merge。如果你浏览文档,你会发现改变这种默认行为的方法。正如我不能告诉你,在书架上对书进行排序的唯一方法是按字母顺序排序一样,我也不能直接告诉你你的流程应该是什么。如果你试图将分歧的参考文献推到一个分支,你将面临一个冲突,你必须先解决这个冲突,然后才能继续操作。

我目前通常遵循的惯例是git pull,然后是commits,当我准备好将更改合并到分支时,我会执行git rebasepull request,最终在接受时将分支merges合并在一起。当你做git rebase时,你会得到一个线性的历史。

以前,当我想合并两个分支时,我使用remote更新历史记录后在本地执行git merge,然后执行git push来更新远程分支。

最新更新