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

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

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

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

Q&A

解決済

1回答

2002閲覧

【Git】GitとSubversionにおけるマージ概念の違い

lanmaru

総合スコア34

Git

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

0グッド

1クリップ

投稿2017/01/15 08:49

今までsvnを用いてバージョン管理をしてきたのですが,最近Gitの勉強を開始しました。
その際に,Gitの仕様(?)で不思議に思ったことがあります。

例として, 佐藤さんと鈴木さんの二人の作業者がいたとして,以下のようなファイルの修正をしたとします。
作業は同一のブランチ(master)で実施(update/commit/pull/push)しています。

void functionA(int argA){
// 佐藤さんがこの部分を実装
}

void functionB(int argB){
// 鈴木さんがこの部分を実装
}

svnで以下のような流れ:

  1. 佐藤さんがcommit
  2. 鈴木さんがupdate
  3. 鈴木さんがcommit

を実施した場合, 特にマージという操作は発生しません。
ログにも2回分のログしか残りません。

しかし,Gitで同じことをしようとした場合:

A. 佐藤さんが add > commit > push
B. 鈴木さんが pull

の時点で2人の作業をドッキングしたというログが発生してしまいます。
(私の操作手順が間違っているだけかもしれませんが。。。)

できれば,svnのように,競合が発生していない限り,
システム側で自動的にマージ作業を実施し,ログを残して欲しくないのですが,
Gitの仕様上,「2人の作業をドッキングしました」というログは必ず残ってしまうものなのでしょうか?

質問の内容がわかりにくく,幼稚な文章をなってしまい,申し訳ありません。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

以下のオプションを指定すればよいと思います。

sh

1$ git pull --rebase

gitの設定ファイル(~/.gitconfig)に以下の記述を追加すれば、オプション指定を省略できます。

sh

1[pull] 2 rebase = true

投稿2017/01/15 13:45

tkmtmkt

総合スコア1800

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

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

lanmaru

2017/01/15 14:26

ご返答、ありがとうございます。教えて頂いたコマンドで意図した通りとなりました。 しかし、気がかりなのが、ネットを検索すると、「rebaseは使わない方が良い」という記述を多く目にします。 特に、「公開リポジトリにプッシュしたコミットをリベースしてはいけない」や「マージ済みの状態でpull --rebaseしないで!!」など、間違えて使用すると、取り返しがつかない(?)事態に陥る危険性があるという記載があります。 勉強不足の状態で、続けて質問することとなり大変恐縮なのですが、「 git pull --rebase」する時に注意すべきことはありますでしょうか?
tkmtmkt

2017/01/15 16:53

subversion相当の利用を行っているのであれば、注意することは特にないと思います。 rebase操作を行うとコミットIDが別の値に変化します。rebase関連での注意事項というのは、rebase操作そのものが問題なのではなく、公開済みのコミットIDを別のものに変更してしまうことが問題なので、自分の端末の内で変更している分にはなんの問題もありません。 pull --rebaseについても、push前のローカルリポジトリ内のコミットIDが変化するだけなので何の問題もありません。
lanmaru

2017/01/16 12:56

ご返答頂きありがとうございます。 >> 公開済みのコミットIDを別のものに変更してしまうことが問題 rebaseする時に注意すべき「観点」がとても良くわかりました。 確かに、自分のローカルにしか存在しないコミットのIDを変えても、他の作業者やリモートリポジトリには影響を与える可能性がないことがわかりました。 ご助言頂いたことを糧に精進を進めたいと思います。 重ねてお礼申し上げます。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問