2009-12-01 115 views
10

好吧,所以我有一個很大的github項目,我不應該把我的小Stacia分支合併到。然而,Heroku似乎只是認真地推動MASTER。它看起來像我推動我的分支,但例如,如果我只有我的分支,它甚至表現爲服務器上沒有代碼。自從.gems文件在我的分支上以來,我甚至無法安裝我的gem。heroku使用git分支令人困惑!

基本上我甚至不希望Heroku知道有一個主人。我只是想用我的測試Stacia分支。但它一直忽略我的本地分支。有沒有辦法做到這一點?再說一遍,我不想在主要的Github倉庫(eeek!)上覆蓋任何東西,但是如果我在heroku上同時擁有master和我的分支並將它們合併到那裏,那也可以。

我是一個總的git新手(不少於windows),請耐心等待。

回答

2

的第一步是確保您有變基您當地的分行在其主人的頂部(我們假設它是在其回購「mainGitHubRepo」)

git fetch mainGitHubRepo master 
git checkout -b mainGitHubMaster mainGitHubRepo/master 

然後回到你的分支和重播mainGitHubMaster的頂部:

git checkout Stacia 
git rebase mainGitHubMaster 

由於georgebrock提到的評論,你不必創建中間的本地分支mainGitHubMaster:您可以在獲取分支的頂部直接變基。

git checkout Stacia 
git rebase maingithubrepo/master 

之後,你可以把你的branch to your GitHub fork,然後做出pull request

若要推動本地分行建立遠程,你只需要簡單的使用方法:
git push REMOTENAME BRANCHNAME
如果您不想在遠程分支上使用相同的名稱,您可以使用:
git push REMOTENAME LOCALBRANCHNAME:REMOTEBRANCHNAME

(這是David Dollar提到了his answergit push heroku yourbranch:master

注意:如果你在GitHub上自己的叉子,你可以在「主」直接工作,這個叉子,這意味着你的拉請求將到來從一個'主'分支,提高你的機會被考慮。
但上述過程仍然有效:您的拉取請求必須導致將整合您的更改的人的微不足道的合併,因此必須在本地進行重設步驟。

+0

您可以通過衍合到遠程跟蹤分支跳過此過程中的一步,而無需創建一個本地分支:'混帳取maingithubrepo ; git checkout stacia; rebase maingithubrepo/master' – georgebrock 2012-05-29 06:29:16

+0

@georgebrock好點,我已經將它包含在答案中以提高知名度 – VonC 2012-05-29 06:38:51

58

如果你想推一個不同分支的Heroku,你可以這樣做

git push heroku yourbranch:master 
+13

這應該是被接受的答案。 – 2012-03-01 06:22:47

+0

工作完美 - 謝謝! – Jim 2012-07-18 01:47:17