2016-09-14 13 views
0

以前に書いたコードを少し改良したかったのです。そこで私は新しいgitブランチを作成し、変更したいものを変更しました。変更が完了したので、私の新しいバージョンは、必ずしも良いものではなく、最初は違っています。したがって、ブランチをマージして元のファイルを変更しない方が良いかもしれないと思います。
代わりに、私は元のファイルがそのまま残っている間に新しい機能を含むファイルのコピーを作成したいと思います。
(私の作品は研究の一種なので、後で両方のバージョンを比較したいと思います)git:ブランチをマージする前に、変更を新しいファイルに移動するには?

もちろん、マスターブランチをチェックアウトしてコンテンツ全体をコピーすることですを元のファイルのクリップボードにコピーし、機能ブランチをもう一度チェックし、マージを実行する前にすべてを新しいファイルに貼り付けます。

しかし、私は常に新しいものを学びたいとあなたは私が何を意味するか知っていれば私の方法は、私には少しneandertalerっぽいに見える...
だから私の質問です:Gitがためにこれを行うにする方法はあります私(マージをしながら、多分)。

ありがとうございました! :)

+1

Gitのポイントの多くは、同じファイルの複数のバージョンを保持しなくても、どのバージョンにもシームレスに戻ることができることです。良いコミットメッセージがある限り、古いバージョンを後でチェックアウトして、いつでも好きなときにそれらを実行することができます。これは少しは慣れていますが、リポジトリをきれいに保つ価値があると思います。 – vroomfondel

答えて

1

featureのままにして、masterに戻ることができます。更新が正常であることを確認する前に、featuremasterにマージする必要はありません。これで、起点ファイルと更新ファイルの両方が2つの異なるブランチで追跡されます。

ファイルのパスをfoo/bar.txtとします。今あなたはmasterです。同じフォルダにfeatureバージョンを追加したい場合は、比較のためだけにしてください。あなたは単にgit cat-file -p feature:foo/bar.txt > feature_bar.txtを実行することができます。同様に、featureにあり、masterバージョンを取得する場合は、git cat-file -p master:foo/bar.txt > master_bar.txtを実行します。

新しいバージョンのGitは、さまざまなリビジョンを異なる作業ツリーにチェックアウトすることができるワークツリー機能をサポートしています。現在masterにいる場合はgit worktree add <another_path> featureを実行して、featureのファイルを<another_path>にチェックアウトすることができます。現在の作業ツリーでmasterを操作し、feature<another_path>に入れると、前後に分岐を切り替える必要はありません。代わりに、2つのシェルウィンドウを開きます.1つはmaster、もう1つはfeatureです。したがって、フォルダを前後に切り替える必要はありません。

+0

'git cat-file'は私にとって素晴らしい作品です!ありがとうございました! – Turysaz

+0

@Turysaz p.s. ':foo/bar.txt'は特定のバージョンを参照するもっと一般的な方法です。 – ElpieKay

0

これは、ファイルを新しいファイルにコピーし、元のファイルを保持できるようにする必要があります。

関連する問題