2012-01-20 95 views
5

我是git的新手,我想知道如何处理一个非常基本的场景。我读了很多关于git的stackoverflow的帖子,但仍然无法找出答案。如何跟踪我的开发git分支中的origin/master

我们有一个每个人都在研究的起源/主远程分支。 我有一个我想实现的功能,可能需要时间来开发。同时,人们可能正在检查源代码/主人的代码。

会是什么我的工作流的样子和我应该如何去建立我的Git分支,给出了以下需求:

  1. 我希望能够提交代码更改我的分支,他们推到我们的服务器上的一个远程分支,所以我不会因为我的电脑被炸而发生变化。

  2. 我想让我的分支与主分支保持同步。

  3. 我想尽量减少定期合并。我喜欢git rebase的概念,所以我想最大限度地利用它,因此快速合并。

  4. 在某些时候,我们将不得不将我的分支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 

回答

5

您可能不希望有一个分支从主控制器拉出并推送到您自己的分支。你想要的是从主人拉到你的本地主人,在本地处理重新绑定,然后推送到你自己的远程分支的功能。这是一个相当标准的工作流程,为您提供完整的控制和最少量的合并。个人而言,我会做这样的:

创建新的本地分支

git checkout -b myFeature 

推送一个新的远程分支(见this stackoverflow question如果需要此步骤的详细信息)

git push origin myFeature 

现在,您可以在myFeature分支上轻松工作,在需要时使用上述命令,而不必搞乱主分支。当你需要得到别人对主做提交的持有,你可以这样做是这样的:

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 
+0

谢谢@ will-Pragnell!我的问题更新如下:你的解决方案和以下内容有什么区别? github上的这个页面建议:https://github.com/diaspora/diaspora/wiki/Git-Workflow 为了从开发中获得最新的更新,请执行一次性设置以建立主要的GitHub回购通过输入一个远程: $ git的远程添加上游GIT中://github.com/diaspora/diaspora.git, $ GIT中取上游, $ GIT中结帐主, $ GIT中变基上游/主, $ git的结帐100-retweet-bugfix, [请确保所有提交的分支必要], $ git rebase master – ben39

+0

做完之后: 'git checkout master git merge myFeature git推起源大师' 我得到 '! [拒绝]多发件人 - >多发件人(非快发) 错误:无法将某些引用推送到'ssh:// xxx' 为防止您丢失历史记录,拒绝非快进更新 在再次推送之前合并远程更改(例如'git pull')。有关详细信息,请参阅 '关于'快速前进'的快速注释'部分“# – ben39

+0

关于您的第二条评论 - 在您尝试合并之前,是否已重新绑定到主服务器上? (当我有一个空闲的时刻,稍后再看看你的第一条评论 - 对不起,这里超级忙!) –

0

git checkout -b FeatureA(创建和结帐分支)
git push origin FeatureA(推新创建的分支原点)

新的分支FeatureA工作。您不希望频繁合并,然后再分配

git rebase origin 

将来每当你想合并到主。

git checkout master 
git merge FeatureA 
git push origin master 
+0

任何时候我做'git rebase master'然后'git push origin/multi-senders'我得到以下'ssh:xxx ![拒绝]多发件人 - >多发件人(非快发) 错误:无法将某些引用推送到'ssh:// xxx' 为防止您丢失历史记录,拒绝非快进更新。 再次按下之前合并远程更改(例如'git pull')。有关详细信息,请参阅'git push --help'的'快速转发注意事项'部分 – ben39