我是git新手,我想知道如何处理一个非常基本的场景。我在stackoverflow上读了很多关于git的帖子,但仍然无法找到答案。
我们有一个每个人都在处理的原始/主远程分支。我有一个功能a想要实现,可能需要时间来开发。同时,人们可能正在将代码签入源代码/主代码。
考虑到以下需求,我的工作流程会是什么样子,我应该如何建立我的git分支机构:
-
我希望能够将代码更改提交到我的分支,并将它们推送到我们服务器上的远程分支,这样我就不会丢失更改,以防我的计算机被炸了
-
我想让我的分支与主分支保持同步
-
我想尽量减少常规合并。我喜欢git-rebase的概念,所以我想最大限度地利用它,从而实现快速合并
-
在某个时刻,我们将不得不将我的分支FeatureA合并到origin/master中
总结:
如何设置从原点/主节点拉动但推到原点/MY-branch的分支?
我的工作流程会是什么样子?
更新:
谢谢你@will pragnell!您的解决方案与以下解决方案之间的区别是什么。
github上的这个页面建议:
https://github.com/diaspora/diaspora/wiki/Git-Workflow
为了从开发干线获得最新更新,请一次性设置,通过输入:将主GitHub回购建立为远程
$ git remote add upstream git://github.com/diaspora/diaspora.git
$ git fetch upstream
$ git checkout master
$ git rebase upstream/master
$ git checkout 100-retweet-bugfix
[确保在分支机构中根据需要提交所有内容]
$ git rebase master
您可能不想要一个从master拉取并推送到您自己的分支的分支。您想要的是从master上拉到本地master上,在本地处理重新定基,然后推送到您自己的远程分支以获得该功能。这是一个相当标准的工作流程,为您提供了完全的控制和最少的合并。就我个人而言,我会这样做:
创建一个新的本地分支
git checkout -b myFeature
将其推送到一个新的远程分支(如果你需要更多关于这一步骤的信息,请参阅这个stackoverflow问题)
git push origin myFeature
现在,您可以愉快地处理myFeature分支,在需要时使用上面的命令进行推送,而不会弄乱主分支。当你需要获得其他人在master上完成的提交时,你可以这样做:
git checkout master
git pull (this will just fast-forward if you don't make any local changes to master)
git checkout myFeature
git rebase master
当你的功能完成后,你可以将你的分支合并或重新设置为master,这样其他人都可以获得你的新功能。像这样:
git checkout master
git merge myFeature
git push origin master
git checkout -b FeatureA
(创建并签出分支)git push origin FeatureA
(将您新创建的分支推送到原点)
制作新的分支功能A。你不想频繁合并然后重新调整的基础
git rebase origin
将来,只要您想合并到master中。
git checkout master
git merge FeatureA
git push origin master