2016-03-23 11 views
0

Githubについての経験はありませんので、誰かが正しいコマンドシーケンスを理解するのを助けてくれることを願っています。私はこのような状況を提示しGitHubのレポによGithub Rebase workを修正してください

------master  
    /
-- dev 
    \ 
     --------extrabranch c11 --- extrabranch c12 

、最後devにコミットから始めて、私は新しいブランチextrabranchを作成して、コメントを追加し、その後、master上でそれを合併しましたそのブランチに対して2つのコミットを行います。 この状況は、Githubリモートリポジトリとローカルで同じです。

extrabranchdevにリベースします。

ローカルにしよう:

git rebase dev extrabranch 
Current branch extrabranch is up to date. 
git pull --rebase 
Current branch extrabranch is up to date. 

をしかしコミットグラフは上記と同じまま。 ブランチdevにrebase extrabranchc11c12のコミットが含まれていない理由を誰かに説明できますか?

編集:私の目標はextrabranchdevにマージし、可能な限りきれいにextrabranchを削除することです。

+1

実際にあなたがここでやりたいことはrebaseのようには聞こえません。 'extrabranch'はすでにdevに基づいています。コミット・グラフはどのように見えますか? – Ajedi32

+0

ありがとうございます: "既に"素晴らしいキーワードです。 –

答えて

3

あなたのグラフを見てみましょう。コミットを表示するように変更しましたc10、これはmasterdevを指します。あなたのイラストはこれを示していませんが、定義上そこにコミットがなければなりません。

-- c10 [master, dev] 
    \ 
     --- c11 --- c12 [extrabranch] 

git rebaseの目的は、グラフ内の特定のポイントに基づいてされる、コミットを移動させることです。 gitはextrabranch (c11 + c12)dev (c10)にrebaseするように指示しています。ただし、extrabranchはすでにdevに基づいてであるため、何もしません。

extrabranchdevにマージし、次にできるだけきれいにextrabranchを削除することを目標としています。最も簡単な方法は、それをマージすることです。途中で競合がないので、早送りを使用してマージされます。 c12が座る場所にdevブランチを移動します

git checkout dev 
git merge extrabranch 

-- c10 [master] 
    \ 
     --- c11 --- c12 [extrabranch, dev] 

その後、希望する場合はextrabranchを削除する必要があります。

git branch -d extrabranch 
-- c10 [master] 
    \ 
     --- c11 --- c12 [dev] 

これは、あなたの投稿が表示されない、devには上流のコミットが存在しないと仮定しています。あなたはそれを理解するためにpullまたはfetchを使用することができます。

+0

完全に動作し、私の概念上の誤りを理解しました。誰かが私の同じ問題を抱えている場合、私は余分なものを追加します:ローカルextrancranchを削除した後、githubで更新するために、私は追加のコマンド 'git branch -d origin/extrabranch'を使ってリモートブランチを削除しました。 Thanks @ dan-lowe –

+1

'c11'と' c12'のコミットは、 '[dev]'部分の後に置き換えてはいけませんか?今では 'c11'がすでに' master'にマージされているようです。 – Peter

+0

@Peter良い点、私のイラストは混乱していましたが、実際には間違っていました。私はそれらを再描画し、より明確になるように答えを整理しようとしました。 –

関連する問題