質問: 現在gitを使ってソース管理をしています。 表題に書いてある通りなのですが、 自ブランチに他ブランチの最新のコミット内容をマージすることはできますでしょうか? そもそもgitを理解しきれていないため、「他ブランチの最新のコミット」と記していますが、それ自体が「他ブランチを自ブランチにマージする」ということなのでしょうか? 他ブランチの該当ファイル以外は自分ランチにマージしたくないためそのような表現を致しました。 他ブランチも同じmasterブランチを切ったブランチです。 であるとすればgitの運用上そのような行為をしたいときは「他ブランチを自ブランチにマージする」ということでいいのでしょうか? そのようなことを実現したいです。 お分かりになる方がいればよろしくお願い致します。
回答: こんにちは。 「ファイルをマージする」という言い回しが気になります。 gitが管理するのは「commit」単位であり、コミットというのは「(正確な表現ではないですが)変更操作」そのものを表します。操作はファイル単位ではないのです。そして、ブランチはその「コミットを数珠つなぎにした一連の変更の累積」と見ることができます。質問の「他ブランチを自ブランチにマージする」というのは、丁寧に言い換えると「他ブランチが積み重ねた変更操作を、自ブランチにも反映させる」ということになります。この表現が目的の操作と合致しているなら、その通りに「他ブランチを自ブランチにマージ」が正解の操作になります。 以下回答です。 「特定ブランチが積み重ねた変更の中で、特定の単一ファイルの変更累積のみを取り入れる」というのは、一般的に通常のgit操作ではやるものではないです。gitに限らずバージョン管理というのは「積み重ねの整合性」というものを重視します。「他ブランチが積み重ねた変更の中の特定ファイルの変更」というのは、他ブランチが組み上げてきた履歴の「整合性」に含まれているため、これをピックアップして特定ブランチに取り込むというのは自ブランチの整合性の破壊につながる危険があるため、バージョン管理の表面的な操作ではサポートされないのです。 あまりオススメしませんが、特定ファイルの状態を取り込む方法としては、`git checkout <他ブランチ> ./<目的のファイル>` とすると、他ブランチでの目的のファイルの状態がワーキングディレクトリに読み込まれるので、それを新しくコミットすれば完了です。