2017-08-18 5 views
0

だから、どういうわけか、私のレポをかなりうんざりさせてしまった。ブランチの基盤へのコミット

本質的に私が今持っているのは、すべての古いバージョンコードと「マスター」ブランチを含んでいる(異なるケースに注意してください)、すべての新しいリワークコードを含んでいますスクラッチ)。これらの2つのそれぞれの分派(彼らについてあまり心配していない)の束を言及しない。

本質的に、私がしたいことは、「マスター」ブランチのすべてのコミットを、現在「マスター」ブランチのベースに移動して、現在オンになっているすべてのブランチを新規作成することです"master"ブランチ。

Master master 
X  /
\ /
    \ /
    \ Y 

そして、私はそれがより見てみたい:私のレポは現在、このような何かを(Xが再構築し、Yは、最初の再構築をコミットする前に最後のコミットを表して)見え、これを説明するために

以下のような:

 newBranch (that was "master") 
    /
/
/
Y 
X 
| 
| 
| 
master (that was "Master") 

それは、より正確なものの現実(これはめちゃくちゃ得た方法がないアイデアを反映したよう

、これは容易に達成されていない場合、私は少しだけよ。このレポから "master"ブランチを削除し、レガシーレポとして残してから、新しいものにリワークを追加します。

可能ですか?この改造を達成するにはどうすればいいですか?あなたはリベースを行うことが何をしたい達成するために

+0

"hello.txt"という名前のファイルが "Hello"という名前のファイルと同じ* *であるWindowsおよびMacOSファイルシステムでは、デフォルトの大文字と小文字が区別されるためです。txt " - 大文字と小文字が異なる2つのブランチを持つことは非常に悪い考えです。次の部分に取り組む前に、その名前の一方または両方の名前を変更してください – torek

答えて

2

が、二つの枝はケースの横に、同じ名前を持っているので、原因OS固有のデフォルトケース - 折りたたみに、あなたはおそらく1ブランチの名前を変更する必要があります。

git checkout master 
git branch -m some_other_name 

は今、あなたはどのあなたはY分岐の名前を変更した場合は、チェックアウトはあなたに

をもたらした枝に応じて、2つのシナリオを持っています

git rebase master 

あなたはXと改名insted場合は、 do

git checkout master 
git rebase some_other_name 

私は多くの競合が予想されます。

+0

"現在のブランチマスタが最新です。 "私がそれを実行すると、rebaseコマンドで大文字と小文字が区別されているように見えません –

+0

OS固有のようですが、とにかくマスターに名前を変更して(何か問題はありません)、リベースを実行できますか? – Francesco

+0

名前の変更これはうまくいきました!私は将来もっと注意するでしょう –

1

はい、可能です。

git rebase --onto Master <commit id for Y>~1 master 
git checkout -b newBranch 

は、その後、あなたの masterブランチは Master枝の上にリベースします、とあなたは masterから newBranchを作成することができます:あなたはコミット履歴を変更するには、コマンドの下に使用することができます。

注:<commit id for Y>~1Yの親コミットです。 YのコミットID(たとえば、5d2bf07)のみを見つける必要があります。コマンドgit rebase --onto Master 5d2bf07~1 masterは、Masterブランチの先頭にあるmasterブランチのコミットをYから最新のコミットにリベースします。

関連する問題