2014-11-20 111 views
3

我有一个远程存储库的本地克隆与主和branch1git工作流后提交

master是最新的,直到我做了一些关于branch1的工作,我承诺(记住,所有地方)。在完成我的branch1工作后,我有点困惑如何去做后续步骤。

我的想法是切换到master,并做了git merge branch1,然后做我的本地的master副本推到远程(我的本地master是最新的远程master)。这是正确的还是有更好的方法来做到这一点?

+0

为什么选择做'混帐checkout','混帐merge',然后'混帐push'时,你可以只是做'混帐push'?我更喜欢导致命令数量最少的工作流程来输入 – 2014-11-21 00:00:14

+0

我没有意识到我可以自己完成git push,它也会执行合并吗? – 2014-11-21 03:09:35

+0

如果您的上游已更改,则必须进行合并/重新分配。如果您不在本地主人工作,则不需要使用两个本地分支,但可以消除结帐/合并。 – 2014-11-21 03:29:26

回答

4

这一切都取决于您的workflow。你有多个开发者在项目上工作,或者只有你?

如果您是该项目的唯一开发人员,那么您的建议很好。您在本地分支,执行您的更改,合并和推送。

另一种方法是创建远程分支,将本地推送到远程分支,然后合并在一起(如果您使用的是Stash,BitBucket或其他远程主机技术)。如果您正在执行协作代码评论或需要与团队分享您的工作,则后一种方法很好。您也可以推送到远程分支进行备份。

+0

快速的问题,合并后,我必须做一个提交与主?或者我可以推? – 2014-11-20 22:20:13

+1

合并不需要提交,因为您只是将提交提交到目标(例如主目录)的提交历史记录中。 – 2014-11-20 22:21:12

+0

很酷的感谢,感谢详细的答案 – 2014-11-20 22:21:38

2

这是将更改从branch1合并到您的master分支的正确方法。关于git合并here有一些很好的文档。

3

当我在一个项目上进行独立工作时,我尽量避开主人的工作。抵制诱惑。

无论是我自己的项目还是其他人的我一直在克隆它,创建一个新的develop分支并在那里工作,并将develop合并到master

我也经常会创造过的develop特性分支,我这样做,所以,如果我需要调整当前运行代码的东西,我可以藏我的变化,切换到develop,进行修正和归并到master并仍然能够回到我正在开发的功能。

我的功能分支从未被推送到原点。一旦功能合并到开发中,我将删除功能分支。

如果我在develop分公司工作,并有一个特性分支我的工作,我通常会重订于develop分支我的特性分支。

+0

我试图抗拒的诱惑;) – 2014-11-20 22:24:58

+0

工作流可以根据它工作的人员变化,但给出的链接是相当不错的出发点,这是一个好主意,理解为什么人们有一定的工作流程,因为你会来跨越他们在许多开源项目上。 – Casey 2014-11-20 22:26:17

3

我通常使用这个工作流程。假设上的名字my_project在你的系统的主目录中存在回购,进入这样的:

cd ~/my_project 

一旦在该项目中,我做了分支机构的检查:

git branch -a 

,将列出所有分支机构。如果你确定没有其他分支想要处理,那么可以跳过这一步。现在,确保你是这样的主人:

git checkout master 

好,好吗?现在,让我们签出develop分支这样的:

git checkout -b develop 

那么现在就同时创建,并签了一个名为develop分支。

现在在开发做你想做的事情。在适当的时候提交。只要做你的事情。

现在,当谈到时间master结账master这样的合并:

git checkout master 

虽然在那里,你现在有两个选择。你可以做一个标准的合并是这样的:

git merge develop 

所以现在master将与develop合并。但人的时候,我喜欢用这样的没有快进(--no-ff)选项:

git merge --no-ff develop 

本网站explains it in detail,但长期和短期的它是通过使用--no-ff你基本上把一个额外提交到合并这标志何时合并发生。这样做的主要好处是,如果某事发生了什么事情,并且需要调查(或回滚)发生了什么事情,那么--no-ff相关的提交很明显可以发现并回滚到。比试图破译您在回购中可能拥有的大量提交更容易。

--no-ff,你与其他人分散团队的工作变得更有价值。通过使用--no-ff提交合并的意思,每个人在处理提交后相关问题时都会变得更加容易。

这么说,我经常做平原git merge develop,当我对我自己简单的项目工作,我在一个蓝色的月亮做出新的调整一次。

Git是最终源控制管理系统,你这么如何处理犯基本上要依赖于处理,将需要回滚,如果/当一起去的问题你的舒适程度。