我是git的新手,我想知道如何解决一个非常基本的场景。我在stackoverflow上看了很多关于git的帖子,但还是找不到答案。
我们有一个每个人都在工作的origin / master远程分支。 我有一个我想要实现的功能,可能需要时间来开发。与此同时,人们可能会检查原始/主人的代码。
考虑到以下需求,我的工作流程会是什么样子以及如何设置我的git分支:
我希望能够将代码更改提交到我的分支机构并将它们推送到我们服务器上的远程分支,这样我就不会在计算机被炒掉的情况下丢失更改。
我希望我的分支机构与主分支机构保持同步。
我想最小化常规合并。我喜欢git rebase的概念,所以我想最大化它的使用,从而快速合并。
在某些时候,我们必须将我的分支FeatureA合并到origin / master。
汇总:
如何设置一个从origin / master拉出但推送到origin / 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
答案 0 :(得分:5)
您可能不希望从master获取分支并推送到您自己的分支。你想要的是从master到你的本地master,在本地处理rebase,然后推送到你自己的远程分支来获取该功能。这是一个相当标准的工作流程,可为您提供完全控制和最少量的合并。就个人而言,我会这样做:
创建新的本地分支
git checkout -b myFeature
将其推送到新的远程分支(如果您需要有关此步骤的更多信息,请参阅this stackoverflow question)
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
当您的功能完成后,您可以将您的分支合并或重新绑定到主控,以便其他人获得您的新功能。像这样:
git checkout master
git merge myFeature
git push origin master
答案 1 :(得分:0)
git checkout -b FeatureA
(创建和结帐分支)
git push origin FeatureA
(将新创建的分支推送到原点)
开发新分支FeatureA。您不希望经常合并到rebase
git rebase origin
以后每当你想要合并到master中时。
git checkout master
git merge FeatureA
git push origin master