2009-05-06 18 views
8

私のgitリポジトリのmasterブランチにコミットを挿入する必要があります。これは、後続のマージとコミットを保持しています。gitを使ってコミットを挿入するにはどうしたらいいですか?

私は現在、この

A--B--C--D--E--F  master 
     \  \ 
     G--H I--J branches 

のようなものを持っているし、新しい構造が、私はこれが可能である場合でも、わからない

A--B--K    master 
    \ 
    C--D--E--F  new branch 
     \  \ 
     G--H I--J old branches 

なるようにコミットKを挿入する必要があります。何か案は?

答えて

10
git checkout master 
git branch new_branch # copy current branch master to new_branch 
git reset --hard B # now master points to B 
(hack, hack, hack) 
git commit -m K  # K on B in master 
+1

これは必要な構造になります - ありがとう! –

2

"master"ブランチの名前を "new branch"に変更します。次に、コミットBをチェックアウトし、そこから「master」という新しいブランチを開始して、変更を加えます。以下のようなものはそれを行うべきである(テストされていない)。

git branch -m master new_branch 
git branch master B 
git checkout master 
+0

ありがとうございました。この結果、コミットAは「新しいブランチ」のメンバーであり、「マスター」ではありません。マスターの歴史は意図した "A - B - K"ではなく "B - K"になります。 –

+0

@Jason私はここで私が4年後にパーティーに遅れていることを知っています。あなたのアカウントは消えてしまったようです。コミットAは "new_branch"と "master"の両方のメンバーになります。それは木であり、多くの枝が同じ祖先を共有することができます。もちろん、 'git log --graph --oneline --all'のように、一方向または他の方法で表記することもできますが、これは単なる表記です - ' git log master'と 'git log new_branch'は両方を表示します同じ構造を作成するというあなたの提案にも当てはまります。 – 13ren

0
# git checkout -b new-master B 

さて、Kのために変更を加え、それらをコミットすると出来上がり、あなたが欲しいの構造があります。 :)

関連する問題