質問: 今まで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人の作業をドッキングしました」というログは必ず残ってしまうものなのでしょうか? 質問の内容がわかりにくく,幼稚な文章をなってしまい,申し訳ありません。 よろしくお願いします。
回答: 以下のオプションを指定すればよいと思います。 ``` $ git pull --rebase ``` gitの設定ファイル(~/.gitconfig)に以下の記述を追加すれば、オプション指定を省略できます。 ``` [pull] rebase = true ```