我有一个远程存储库的本地克隆与主和branch1
。git工作流后提交
master
是最新的,直到我做了一些关于branch1
的工作,我承诺(记住,所有地方)。在完成我的branch1
工作后,我有点困惑如何去做后续步骤。
我的想法是切换到master
,并做了git merge branch1
,然后做我的本地的master
副本推到远程(我的本地master
是最新的远程master
)。这是正确的还是有更好的方法来做到这一点?
我有一个远程存储库的本地克隆与主和branch1
。git工作流后提交
master
是最新的,直到我做了一些关于branch1
的工作,我承诺(记住,所有地方)。在完成我的branch1
工作后,我有点困惑如何去做后续步骤。
我的想法是切换到master
,并做了git merge branch1
,然后做我的本地的master
副本推到远程(我的本地master
是最新的远程master
)。这是正确的还是有更好的方法来做到这一点?
这一切都取决于您的workflow。你有多个开发者在项目上工作,或者只有你?
如果您是该项目的唯一开发人员,那么您的建议很好。您在本地分支,执行您的更改,合并和推送。
另一种方法是创建远程分支,将本地推送到远程分支,然后合并在一起(如果您使用的是Stash,BitBucket或其他远程主机技术)。如果您正在执行协作代码评论或需要与团队分享您的工作,则后一种方法很好。您也可以推送到远程分支进行备份。
快速的问题,合并后,我必须做一个提交与主?或者我可以推? – 2014-11-20 22:20:13
合并不需要提交,因为您只是将提交提交到目标(例如主目录)的提交历史记录中。 – 2014-11-20 22:21:12
很酷的感谢,感谢详细的答案 – 2014-11-20 22:21:38
这是将更改从branch1
合并到您的master
分支的正确方法。关于git合并here有一些很好的文档。
当我在一个项目上进行独立工作时,我尽量避开主人的工作。抵制诱惑。
无论是我自己的项目还是其他人的我一直在克隆它,创建一个新的develop
分支并在那里工作,并将develop
合并到master
。
我也经常会创造过的develop
特性分支,我这样做,所以,如果我需要调整当前运行代码的东西,我可以藏我的变化,切换到develop
,进行修正和归并到master
并仍然能够回到我正在开发的功能。
我的功能分支从未被推送到原点。一旦功能合并到开发中,我将删除功能分支。
如果我在develop
分公司工作,并有一个特性分支我的工作,我通常会重订于develop
分支我的特性分支。
我试图抗拒的诱惑;) – 2014-11-20 22:24:58
工作流可以根据它工作的人员变化,但给出的链接是相当不错的出发点,这是一个好主意,理解为什么人们有一定的工作流程,因为你会来跨越他们在许多开源项目上。 – Casey 2014-11-20 22:26:17
我通常使用这个工作流程。假设上的名字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是最终源控制管理系统,你这么如何处理犯基本上要依赖于处理,将需要回滚,如果/当一起去的问题你的舒适程度。
为什么选择做'混帐checkout','混帐merge',然后'混帐push'时,你可以只是做'混帐push'?我更喜欢导致命令数量最少的工作流程来输入 – 2014-11-21 00:00:14
我没有意识到我可以自己完成git push,它也会执行合并吗? – 2014-11-21 03:09:35
如果您的上游已更改,则必须进行合并/重新分配。如果您不在本地主人工作,则不需要使用两个本地分支,但可以消除结帐/合并。 – 2014-11-21 03:29:26