質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Q&A

解決済

2回答

24641閲覧

gitで他ブランチの最新のコミット内容をマージするには

k499778

総合スコア599

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

0グッド

0クリップ

投稿2017/05/17 12:17

現在gitを使ってソース管理をしています。

表題に書いてある通りなのですが、
自ブランチに他ブランチの最新のコミット内容をマージすることはできますでしょうか?

そもそもgitを理解しきれていないため、「他ブランチの最新のコミット」と記していますが、それ自体が「他ブランチを自ブランチにマージする」ということなのでしょうか?

他ブランチの該当ファイル以外は自分ランチにマージしたくないためそのような表現を致しました。

他ブランチも同じmasterブランチを切ったブランチです。

であるとすればgitの運用上そのような行為をしたいときは「他ブランチを自ブランチにマージする」ということでいいのでしょうか?

そのようなことを実現したいです。

お分かりになる方がいればよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

難しく考えすぎなのではないでしょうか。例えばdevブランチで改修した。それをmasterに取り込みたいのであれば、素直に

git checkout master

git merge dev

でできると思います。当然、devブランチでの変更点はコミットしてある必要があります。gitではバグが見つかると、bugfixというブランチにチェックアウトして、直したら、それをmasterにマージするというような作業の繰り返しになります。

投稿2017/05/17 12:44

imamoto_browser

総合スコア1161

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k499778

2017/05/17 12:49

回答ありがとうございます。 そうですね、単純なマージ作業のようでした。 git hubでの管理だったためコマンドでのマージに慣れていませんでした。 少しずつgitの知識と経験を積み重ねていき高みにいきます。 ありがとうございました。
guest

0

こんにちは。

「ファイルをマージする」という言い回しが気になります。
gitが管理するのは「commit」単位であり、コミットというのは「(正確な表現ではないですが)変更操作」そのものを表します。操作はファイル単位ではないのです。そして、ブランチはその「コミットを数珠つなぎにした一連の変更の累積」と見ることができます。質問の「他ブランチを自ブランチにマージする」というのは、丁寧に言い換えると「他ブランチが積み重ねた変更操作を、自ブランチにも反映させる」ということになります。この表現が目的の操作と合致しているなら、その通りに「他ブランチを自ブランチにマージ」が正解の操作になります。

以下回答です。
「特定ブランチが積み重ねた変更の中で、特定の単一ファイルの変更累積のみを取り入れる」というのは、一般的に通常のgit操作ではやるものではないです。gitに限らずバージョン管理というのは「積み重ねの整合性」というものを重視します。「他ブランチが積み重ねた変更の中の特定ファイルの変更」というのは、他ブランチが組み上げてきた履歴の「整合性」に含まれているため、これをピックアップして特定ブランチに取り込むというのは自ブランチの整合性の破壊につながる危険があるため、バージョン管理の表面的な操作ではサポートされないのです。
あまりオススメしませんが、特定ファイルの状態を取り込む方法としては、git checkout <他ブランチ> ./<目的のファイル> とすると、他ブランチでの目的のファイルの状態がワーキングディレクトリに読み込まれるので、それを新しくコミットすれば完了です。

投稿2017/05/17 12:24

編集2017/05/17 12:40
tamoto

総合スコア4105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k499778

2017/05/17 12:27

回答ありがとうございます。 そうですね、たしかにファイルをマージするという観点は少しおかしな気がしました。 他ブランチ、つまり他ブランチの変更操作を自ブランチに反映させる。 という観点で合っています。
k499778

2017/05/17 12:47

回答ありがとうございます。 おそらく単純に「ブランチをマージする」のが正解なのですね。 git hubで管理しており、それ上でマージしていたので、コマンドでmargeコマンドを打つ機会が少なかったので慣れていませんでした。 gitの考え方を深めることができました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問