1

「DEV」マシンにgitリポジトリがあります。少し前に、いくつかのコードを PROD マシンにコピーしました。それ以来、私の DEV マシンには多くのコミットがありました。ただし、私の PROD マシンには、コミットも「分岐」もされていない特別なコード変更がいくつかあった可能性があります。

質問: PROD のコードに最も近い DEV のコミットを見つけるにはどうすればよいですか?

次に、ブランチを作成してマージします。目的は、すべてを 1 つのブランチにマージすることです。PROD には一度も変更されていないファイルがたくさんあるので、すべてのコミットを検索して完全に一致するファイルを検索する方が簡単かもしれません。

私はgit拡張機能を使用しています。

タイ。

4

2 に答える 2

1

1 つのオプションはgit bisect、古いコミットを検索するために使用することです。各ステップでは、ディレクトリ差分ツールを使用して git 作業ディレクトリと PROD を比較します。作業ディレクトリに保持したい PROD 以降の新しい変更がある場合は、それをマークしgoodます。作業ディレクトリに古いバージョンのファイルがあり、代わりに PROD バージョンが必要な場合は、マークを付けますbad。最終的に、PROD が開始された場所に最も近いコミットを見つける必要があります。そこからブランチを作成し、PROD からコピーすれば準備完了です。

于 2012-05-29T14:13:38.780 に答える
0

他の情報がなければ (そして、PROD マシンのインストールが git リポジトリ自体ではないと仮定すると、これは非常に簡単になります)、ファイル作成のタイムスタンプを DEV リポジトリのコミット履歴と比較するだけです。おそらく、PROD マシンのコードは狭いウィンドウでコピーされました。このコピーを実行している間、コミットしていなかった可能性もあります。git logコピーのタイムスタンプの直前にコミットのタイムスタンプを見つけるために使用するだけです。

git checkout -B new_branch <hash_of_that_commit>    # Checks out 'new_branch' at that commit

次に、DEV と PROD を比較し、PROD の変更を DEV に増分的またはバッチとしてコピーします。インクリメントまたはバッチごとにコミットします。

その時点で、実行可能なトピック ブランチがあります。必要に応じてマスター ブランチにマージまたはリベースできます。

于 2012-05-29T15:24:39.763 に答える