2016-06-15 5 views
1

フィーチャーブランチの作業を開始し、いくつかの変更とコミットを行いました。しかし、私はリモートトラッキングブランチにこれらの変更をプッシュしていません。しかし今、別のバグ修正ブランチを作成して、プルリクエストを作成できるようにしたいと思います。 私は現在のブランチ上で行ったすべてのコミット履歴を使って新しいブランチを作成することができます。git既存のローカルコミットを使用してブランチを作成する

私はコミットグラフを追加して分かりやすくしたいと思います。 --- B --- C --- D --- E --- G

だからAがリモートに既にあったとローカルコミットBCDEGしたブランチに変更を行いました。今私は新しい枝を見つめることをからにコミットするようにして、レビューのために既存の機能ブランチコミットAに新しいプルリクエストを作成できるようにします。

答えて

0

だけで行う、機能ブランチから始まる、あなたは機能ブランチ上に既にあると新しいブランチを作成したいと仮定:その後

git checkout -b <new_branch> 

をあなたは原点にそれをプッシュし、同様にプルリクエストを作成することができます。

git push origin <new_branch> 

PSあなたの質問を正しく理解していれば

1

はあなたが

A` <-- A <-- B <-- C <-- D <-- E <-- G 
^origin/feature      ^HEAD, feature 

  -- B <-- C <-- D <-- E <-- G 
     /       ^HEAD, bug-fix 
A' <-- A 
^  ^feature 
| 
origin/feature 

まず変更したいことを考えると、あなたはこれがあなたにダイアグラムを与える

git branch bug-fix

あなたのブランチ作成する必要があり

あなたは feature枝に残っている
A' <-- A <-- B <-- C <-- D <-- E <-- G 
^origin/feature     ^feature, bug-fix, HEAD 

注意、あなただけまだチェックアウトしていない、bug-fixブランチを作成する必要があります。

次に、あなたは(ここでAあなたはまた、相対HEAD位置を使用することができ、コミットのSHA1ハッシュである)resetfeature(B、C、D、E、G)上のコミットを削除する必要がある:

git reset --hard A

NOTEあなたは機能にコミットされていない仕事を失うことになる - そのコマンドを実行する前に、resetコマンドの危険を理解してください。すべてのリセットはありませんそして、あなたの新しいブランチをチェックアウトし、プル要求のためのあなたの機能ブランチの変更押す「プッシュ」A.をコミット

からfeatureのポインタである:これは、あなたに必要な図を与え

git checkout bug-fix 
git push 

をof:

  -- B <-- C <-- D <-- E <-- G 
     /      ^HEAD, bug-fix 
A' <-- A 
     ^origin/feature, feature 
+1

素晴らしい答え+1ですが、不完全です。最後のビットを追加して、 'master'(コミットAの場合)から新しい' bugfix'ブランチをチェックアウトする場所に質問に答えてください。もう一度、良い仕事、あなたの答えが私のためにすべての視点でそれを置くまで、私は質問によって混乱しました。 –

+0

彼の質問を3回以上読んだ後、追跡された 'feature-branch'にすでに' A'がコミットしていて、バグ修正ローカルチェックイン 'BCDEG'が追加されたと思います。彼は 'BCDEG'を地元のバグ(局所的)の枝に移して、' A 'で 'フィーチャーブランチ'のプルリクエストを行うことを望んでいます。私は答えを更新して質問に直接答えますが、その仕組みは同じです。 –

+0

あなたはおそらく正しいでしょう。質問は混乱して私に語られています。いずれにせよ、私はあなたの答えがその力学をはっきりと説明していると思います。名声 –

関連する問題