我有一个带有master和branch1
的远程存储库的本地克隆。
master
是最新的,直到我对branch1
做了一些工作(我记得,都是本地的)。在我的branch1
工作之后,我对如何进行后续步骤感到困惑。
我的想法是切换到master
,然后执行git merge branch1
,然后将master
的本地副本推送到远程(我的本地master
是最新的远程master
)。这是正确的还是有更好的方法来做到这一点?
答案 0 :(得分:4)
这完全取决于您的workflow。您是否有多个开发人员正在处理该项目或只是您?
如果您是唯一从事该项目的开发人员,那么您的建议很好。您在本地分支,执行更改,合并,推送。
另一种方法是创建远程分支,将本地推送到远程分支,然后合并在一起(如果您使用的是Stash,BitBucket或其他一些远程主机技术)。如果您正在执行协作代码审查或需要与团队共享您的工作,后一种方法很好。您也可以推送到远程分支进行备份。
答案 1 :(得分:3)
当我正在进行一个项目甚至是独奏时,我试图不让主人去工作。抵制诱惑。
无论是我自己的项目还是其他人,我一直在克隆它,创建一个新的develop
分支并在那里工作,而不是将develop
合并到master
。< / p>
我还经常在develop
之外创建功能分支,我这样做,这样如果我需要调整当前正在运行的代码,我可以存储我的更改,切换到develop
,make修复并合并到master
并仍然可以返回到我正在处理的功能。
我的功能分支永远不会被推到原点。将该功能合并到develop后,我将删除功能分支。
如果我在develop
分支上工作并且有一个我正在处理的功能分支,我通常会在develop
分支上修改我的功能分支。
答案 2 :(得分: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 fast forward(--no-ff
)选项,如下所示:
git merge --no-ff develop
这个网站explains it in detail,但它的长短之处在于,通过使用--no-ff
,您基本上会在合并中添加额外的提交,以标记何时合并发生。这样做的主要好处是,如果某些东西搞砸了,你需要调查或回滚 - 发生了什么,--no-ff
相关的提交很明显可以发现并回滚到。比试图破解你在回购中可能拥有的大量提交要容易得多。
--no-ff
在分散的团队中与其他人合作时变得更有价值。通过使用--no-ff
提交进行合并的平均值,每个人在处理提交后相关问题时的生活变得更加容易。
那就是说,当我在自己做一些简单的项目时,我常常做普通git merge develop
,我在蓝月亮进行一次新的调整。
Git最终是一个源代码管理系统,所以你处理提交的方式基本上取决于你在处理需要回滚的问题时的舒适程度。
答案 3 :(得分:2)
这是将branch1
的更改合并到master
分支的正确方法。关于git合并here有一些很好的文档。