1

これが些細なことである場合は申し訳ありませんが、夜の大部分を解決策を探すのに費やしたので、少し行き詰まっています。私は現在、私が唯一の開発者であるプロジェクトのバージョン管理に Git を使用しており、特定のコードの束で作業するのに多くの時間を費やした後、マスター ブランチでゼロから始めたいと思っていますが、以前のすべての作業を現在のマスター ブランチに「アーカイブ」し、既存のリポジトリ内に他の作業を「アーカイブ」します。現在、マスター ブランチに一連のコミットがあり、続いてブランチ A に 2 番目の一連のコミットがあります。次のようになります。

                 A: C4-C5-C6
                   /
master: C0-C1-C2-C3

プロジェクトの前に空のコミットを追加し (現在の最初のコミットは空ではありません)、現在の履歴を階層を保持する一連のブランチに保存してから、その空のコミットから新しいコードで作業を開始したいと考えています。それは次のようになります。

                     A: C4-C5-C6 
                       /
   oldcode: C0-C1-C2-C3
           /
master: C0' (empty)-C7...

私はそれが理にかなっていることを願っています.リベースが必要だと感じていますが、それがどのように機能するのか正確にはわかりません.すでに持っているものを誤って失いたくありません. どんな助けでも大歓迎です、ありがとう!


編集:現在のマスターブランチを新しいブランチに古いブランチにコピーしてコミットし、マスターブランチの作業ディレクトリを消去して再度コミットする可能性があることに気づきました。これにより、実際のタイムラインと私の古いコードが保持され、おそらくより「適切」になります。それは理にかなっていますか?次のようになります。

                 A: C4-C5-C6
                   /
master: C0-C1-C2-C3-C8(empty)-C9...
                   \
           oldcode: C7

ありがとう!

4

2 に答える 2

1

git 1.7.2 以降git checkout --orphan <new_branch_name>、既存のブランチと履歴を共有しないブランチを作成するために使用できます。この回答には、使用方法の詳細が記載されています。したがって、 を使用して既存のすべてのブランチの名前を変更しgit branch -m、 を使用git checkout --orphanして新しいブランチを作成します。

于 2013-06-10T04:33:37.033 に答える
0

おそらく多くの方法がありますが、私は次のようにします(図に基づいて):

現在のmasterブランチで<-これを実行すると、現在のマスター ブランチに基づいて名前がgit checkout -b oldcode付けられた新しいブランチが作成され、チェックアウトされます。oldcode(したがって、まさにこの時点で を作成oldcodeたので、 とmasterは同じになります。これは、 を実行することで確認できますgit diff master oldcode)

master次に、 を実行してブランチに戻りますgit checkout master

これで、ブランチで任意のコミットを実行して、masterブランチから分岐する (異なるものにする) ことができますoldcode

それは簡単です。

master ブランチでコーディングしたり「作業」したりしないでください。そうすれば、これを行う必要がなくなります。または、実稼働環境/ライブ コードにバグが発生する可能性を回避します。マスター ブランチからコードを作成する「トピック」ブランチに分岐し、git merge完了したら変更をマスターに統合します。これが役立つことを願っています。

于 2013-06-10T04:47:54.670 に答える