2011-06-29 10 views
1

私はgitを使い始めました。私は私のコードの現行バージョンであるマスターを含んでいる私のサーバーにリモートgit repoを持っています。私のローカルコンピュータでは、私はバージョンコントロール(単にプレーンファイル)を使用する前から、このコードの古いバージョン(約10)を別の場所に保存しています。古いコードをgitリポジトリに移動する

古いバージョンを再度必要とすることはありませんが、以前のバージョンをチェックしたければ、これを行うことができるように、リポジトリに追加したいと思います。

どうすればいいですか?ブランチやタグとして追加するにはどうしたらいいですか?また、それらをリモートレポに追加するにはどうすればいいですか?

私はこれを行います:すべての現在のバージョンコード(すでにコミットされ、サーバにプッシュされています)をコピーして古いコードファイル(バージョン0.2)にコピーして貼り付け、新しいブランチ(version0.2)それをサーバーにプッシュします。今私はmasterとversion0.2という2つのブランチを持っています。これは正しい方法でしょうか?あなたは何ができるか

答えて

1

あなたのシステムは問題ありませんが、古いコードが実際にmasterとなっている場合は、すべてのコードがリポジトリに入ったらすべてを1つのブランチにまとめておくことをお勧めします。私はこれがプライベートレポジトリであると仮定しています。マスターを悩ますことは誰にも影響を及ぼしません(パブリックリポジトリの履歴を書き直すのはうまくいかない)。

  1. v0.1の
  2. v0.2デベロッパー
  3. v0.3を
  4. マスター
:私はまた、あなたが以下の枝に似た枝の束を持っていると仮定言われていること

この場合、v0.1はv0.1で作成された最も古いv0.2であり、以下同様です。実際にマスターがこれを表現するようにするには、最後にマスターがすべてのブランチのコードを含むようにブランチをリベースすることをお勧めします。これを実行する手順は次のとおりです、ここではオリジナルのv0.2デベロッパーブランチをREBASEという名前の新しいブランチを作成して

  1. git checkout v0.2
  2. git checkout -b REBASE_v0.2
    • 影響しません。何かがうまくいかない場合は、いつも古いブランチに戻すことができます。
  3. git rebase v0.1
  4. 任意の競合を解決します。
  5. 各ファイルをv0.1とv0.2の間で削除した場合git rm FILE各ファイル。あなたはv0.2デベロッパーおよびv0.3をgit rm FILE各ファイル間の任意のファイルを削除した場合
  6. git checkout v0.3
  7. git checkout -b REBASE_v0.3
  8. git rebase REBASE_v0.2
  9. は競合
  10. を解決します。
  11. インポートした他のバージョンブランチに対して、ステップ6〜10をリンスして繰り返します。
  12. git checkout master
  13. git checkout -b REBASE_master
  14. git rebase REBASE_v0.3
  15. すべての競合が正しく、これは何の違いを示さないはずで解決されたと仮定すると、任意の競合
  16. git diff master
    • を解決します。
  17. git checkout master
  18. git branch master_old
  19. git reset --hard REBASE_master
  20. ​​
    • あなたはすべてが良好であることを特定できたら、あなたが行くことができ

リベースの枝を取り除きますアエアdを実行し、元のブランチを取り除く:git branch -D v0.1 v0.2 v0.3 master_old

この時点で、実際のコード進行を持つマスターブランチを持つ必要があります。

+0

この作品を本当にうれしく思います – Justin

1

  1. は、すべての古いバージョンを検索し、最も古いものでリポジトリを作成し、
  2. が二番目に古いバージョンを持つすべてのファイルを置き換えコミット年齢
  3. によってそれらをソートしあなたは、リモートリポジトリのクローンからのすべてのバージョン
  4. を犯したまで
  5. 繰り返しをコミットし、
  6. この新しいリポジトリを引きます10最新のバージョンを維持してマージ競合を解決してコミットする

リモートレポジトリの唯一のユーザーであれば、古いバージョンの上にリモートレポから最新のコミットを適用することができます。リモートのRepoを交換してください。

関連する問題