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

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

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

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

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

3回答

1608閲覧

Gitのコンフリクトが発生する状況

97222573

総合スコア0

Git

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

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2020/09/05 09:51

編集2020/09/05 11:57

前提

ファイルAとファイルBがあったとします。
私はファイルA、BさんはファイルBを担当しており、それぞれブランチA、ブランチBで作業しています。

  1. 私がファイルAを変更・コミット
  2. BさんがファイルBを変更・コミット→ブランチBにpushしてdevelopにmerge
  3. 私がBさんの変更を取り込むために git pull origin develop
  4. 私がまたファイルAを変更・コミット
  5. BさんがファイルBを変更・コミット→ブランチBにpushしてdevelopにmerge

この場合、次に私がブランチAにpushしてdevelopにmergeするとコンフリクトが発生してしまうのでしょうか?

発生するのだとしたら、 6. git pull origin develop を行ってBさんの変更を取り込んでからmergeすればコンフリクトが発生せずにmergeできますか?

追記

ローカルで再現できるという声が多いので。A、Bのcommitterが違っていても同一であってもmerge結果は変わらない、つまりcommitterはmergeの動作に一切影響しないということでしょうか?私はこれすらわからない初心者なので私一人のアカウントだけでは再現しきれないと思い質問したのです。

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

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

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

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

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

m.ts10806

2020/09/05 09:52

やってみたのでしょうか。 問題点は何でしょう
97222573

2020/09/05 09:54

面倒事になるのを避けたいのでまだやっていません。
gentaro

2020/09/05 10:13

確認用にリポジトリ作って試せば良いんじゃないですか。 それが面倒だ、というのならただの丸投げ質問ですが。
maisumakun

2020/09/05 11:05

> 面倒事になるのを避けたいのでまだやっていません。 「面倒事」といっても、pushする前ならせいぜい「ローカルリポジトリが混乱する」程度の話ですし、それぐらいならgit resetで戻せます。
miyabi_takatsuk

2020/09/05 13:38

試しにやってみないとわかりません。 第三者ではある程度しかわかりません。 なぜなら、どういう変更をしたかも、関わってくるからです。 (既に回答に出ている通り、両者がどのファイルのどの行を変えたか、にもよる話ってこと)
guest

回答3

0

Git の振る舞いを確認したいときは、現在のプロジェクトを使って検証する必要はありません

Git は実はローカルに push, pull できるリポジトリーを作ることで
ローカルだけで検証を行うことができます:

console

1$ git init ./a 2$ git init ./b 3$ git init --bare ./github

これを知っておくと、
今後 Git の振る舞いでわからないことに直面しても、簡単に手元で心ゆくまで試すことができます

例えば、試しに commit, push してみましょう:

console

1$ cd a 2$ echo "Hello World!" > test.txt 3$ git add . 4$ git commit -m "First commit" 5$ git remote add origin ../github 6$ git push origin master

push できたか確認してみましょう:

console

1$ cd ../github 2$ git log 3commit 58556f5aa9e021b56e6be566cf4e00b600d40f6e (HEAD -> master) 4Author: Yukihiko Shinoda <yuk.hik.future@gmail.com> 5Date: Sat Sep 5 20:02:08 2020 +0900 6 7 First commit

参考:

投稿2020/09/05 11:14

編集2020/09/05 15:18
y_shinoda

総合スコア3272

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

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

97222573

2020/09/05 11:50 編集

私一人で再現できるということは、A、Bのcommitterが違っていても同一であってもmerge結果は変わらない、つまり、Committerはmergeの動作に一切影響しないということでしょうか?
y_shinoda

2020/09/05 11:53

気になる場合は committer をそれぞれのローカルリポジトリーで 次のコマンドで変えることができます: $ git config --local user.name "Your Name" $ git config --local user.email your.email@example.com
97222573

2020/09/05 11:59

「気になる場合は」ではなく、この前提が正しくないと「手元で心ゆくまで試すことができます」とは言えませんよね?
y_shinoda

2020/09/05 12:04

committer をそれぞれのローカルリポジトリーで変えれば その前提自体がなくなるのではありませんか? また、完全に同じ環境での確証がほしいのであれば、 やはり面倒でも自分で全く同一の環境を構築して検証する他はありませんし、 自分を含め回答者は誰も回答の内容を完全に保証することはできません
maisumakun

2020/09/05 12:39

> Committerはmergeの動作に一切影響しないということでしょうか? 影響はゼロではありません(コンフリクト時に書き込まれるコミットIDが違います)。当然ながら、付与されるハッシュにはコミッターの名前なども入りますので、「何から何まで同じ」状況は再現できません。 (もっとも、それを言い出せば、コミットしたタイムスタンプも影響しますので、完璧に再現することは現実的ではないです)
guest

0

基本的には、A,B両名の変更箇所がカブっていない限りは自動でマージされるはずです。
万が一コンフリクトが起きたとしても、割と親切なメッセージが出るのでなんとかなると思います。

意外と面倒事にはならないですよ(ちょっとググる必要はでてきますが)

投稿2020/09/05 12:26

YakumoSaki

総合スコア2027

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

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

0

次に私がブランチAにpushしてdevelopにmergeするとコンフリクトが発生してしまうのでしょうか?

別なファイルしか編集していないのであれば、おそらくしません。

同じファイル内ですら、別な箇所の変更だった場合には3-way mergeにより、コンフリクトせずにマージできることがあります。

投稿2020/09/05 11:04

maisumakun

総合スコア146018

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

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

maisumakun

2020/09/05 12:36

> 私一人のアカウントだけでは再現しきれないと思い質問したのです。 fetchした状態のGitリポジトリごとコピーして検証する、という手段も考えられます。あとはローカルでmergeを試みるだけです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問