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

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

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

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

Q&A

解決済

1回答

19424閲覧

リモートブランチで他の人のコミットを git pull で取り込んで良いのか?

matt-note

総合スコア17

Git

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

0グッド

1クリップ

投稿2019/05/13 12:42

編集2019/05/13 14:44

リモートブランチを git pull しようと考えています。
自分が作成したプルリクエストについて、他の人がコミットを追加した変更をローカルに取り込む時は、以下のコマンドを実行するということで、よろしいでしょうか?

bash

1# 自分が push したリモートの some-branch に他の人のコミットが追加されたので、 2# ローカルの some-branch に変更を取り込みたい。 3$ git checkout some-branch 4$ git pull origin some-branch

というのは、以前 git pull でミスってしまった経験があるためです。
参考: Git で新しいリモートブランチをローカルに持ってくるときに git pull してはいけない理由

ここでの場合、他の人が作成したリモートブランチを git pull するわけではないので、自分が push したリモートブランチの変更を取り込むときは git pull をして不具合が起きることはないのではと思います。

よろしくお願いします。

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

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

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

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

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

Eggpan

2019/05/13 13:38

自分が作成したブランチも、他の人がコミットを作成したブランチも両方ともsome-branchという事でしょうか? 誰が何というブランチをいつ作成して、自分のブランチが今何か、というのが質問からは読み取れないです。 状況によってミスになりにくようなコマンドとして、どのようなものが良いかが変わってきそうですので、詳細な状況を記載いただければ良い回答が得られると思います。 余談になってしまいますが、git pullはいきなりmergeまで実行されてローカルの状態が変わったりするので、git fetchとgit mergeで操作したほうが理解が深まると思います。
matt-note

2019/05/13 14:00 編集

ご質問、ありがとうございます。 文章に、自分が作成したブランチも、他の人がコミットを作成したブランチも両方ともsome-branch であるという点を追加しました。 やはり、git pull はいきなりローカルの状態を変えるということで、取り扱いが難しいなと思いました。git fetch についても使用法を学んでいこうと思います。
Eggpan

2019/05/13 14:20

・自分がmasterからsome-branch を作成 ・他の人もmasterからsome-branch を作成 ・他の人が some-branch をpushした (origin/some-branchが更新された) ・これから自分が更にsome-branchをpushして、some-branch -> masterへのプルリクエストを作成したい という状況だが、他の人のコミットがorigin/some-branchに存在するので、これを取り込んだ上でpushしてプルリクエストしたいと思っている、という事でしょうか。 「自分が作成したプルリクエスト」の部分がどういったことを指しているのかが読み取れず・・。 また、「git pull で問題ない」というのは、どのような問題が発生するかを懸念されていますでしょうか。 上記に書いた状況で理解がただしければ、「他人への影響という意味では問題が、コンフリクト起きて失敗するかもしれないので、自分が面倒という問題は発生します」という回答になりそうです。
matt-note

2019/05/13 14:32 編集

* 自分がmasterからsome-branch を作成して、 * 自分が push して origin/some-branch を作成して、 * 他の人が origin/some-branch にコミットを追加したので、 * これをローカルの some-branch に取り込みたい という状況です。 > どのような問題が発生するかを懸念されていますでしょうか。 「コンフリクト起きて失敗するかもしれない」と上記参考リンクで言うところの「意図していない結果」です。これは意図しないコミットが作成されて、ミスってしまったことがあるためです。
guest

回答1

0

ベストアンサー

  • 自分がmasterからsome-branch を作成して、
  • 自分が push して origin/some-branch を作成して、
  • 他の人が origin/some-branch にコミットを追加したので、
  • これをローカルの some-branch に取り込みたい

という事でしたので、その前提で。

自分がpushしたあと、ローカルコミットが無いのであれば質問の通りで問題ありません。
1つでもローカルコミットがあるようでしたら、マージコミットとともに取り込みが成功するか、コンフリクトが起きる可能性があります。

不安であれば、ローカルのsome-branchから、ブランチを先に作っておくのが良いと思います。

Bash

1# ローカルのsome-branchからsome-branch-bakkupを作成 2git branch some-branch-bakkup some-branch 3 4# some-branch に切り替え 5git checkout some-branch 6 7# 現在のbranchを確認した上で 8git branch 9 10# リモートの変更を取り込み 11git pull origin some-branch

ブランチを作っておくことによって、何かあったらブランチ名を変更して入れ替えれば戻したりすることが可能になります。

Bash

1git branch -m <old_name> <new_name>

他の人がgitに詳しければ、いっそ自分の分はブランチ名を変更してpushして、取り込みについて聞いたりしてみるのも良いと思います。

「git 同一ブランチ 開発」などで検索してみた所、下記の記事がわかりやすいと思いました。

複数の作業環境から変更が同一ブランチにpushされるGitリポジトリについて、リモートにある内容を確実に手元に反映する - ククログ(2016-09-02)

投稿2019/05/13 15:23

Eggpan

総合スコア2727

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

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

matt-note

2019/05/14 12:49

> 自分がpushしたあと、ローカルコミットが無いのであれば質問の通りで問題ありません。 > 不安であれば、ローカルのsome-branchから、ブランチを先に作っておくのが良いと思います。 素晴らしい回答、ありがとうございました。 参考リンクについても、参考になりました。 > 普通のpullもrebaseも、どちらも衝突(conflict)がなければ問題ないのですが、衝突が発生してしまった場合、rebaseはその後でとる対応が普通のpullに比べると分かりにくくて面倒です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問