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

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

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

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

GitHub

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

Q&A

解決済

1回答

2892閲覧

git checkout リモートブランチ名 したがリモートのソースが反映されないのは何故でしょうか?

pecchan

総合スコア555

Git

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

GitHub

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

0グッド

0クリップ

投稿2022/01/21 23:25

gitにまだ慣れない初心者です。
初歩的な質問で恐縮です。

チーム開発に入りました。
メンバーから、らxxxというブランチを取り込むよう指示されました。

そこでローカルのxxxブランチ上で git chekoutしました。

PS D:\project> git branch * xxx develop PS D:\project>git checkout xxx

すると

Already on 'xxx' Your branch is up to date with 'origin/xxx'.

と出力され、ローカルのソースは更新されませんでした。

github上で見ると確かに修正されたソースとブランチはpushされてました。

何が原因で反映されないのでしょうか?
先輩方教えて頂けると幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Gitは分散型のバージョン管理システムである!……みたいな話を聞いた事はありませんか?
今回の質問はこの「分散型バージョン管理システム」というポイントが重要になってきます。

bash

1$ git branch 2* xxx 3 master 4 5# -aオプションを付与してoriginのブランチも表示 6$ git branch -a 7* xxx 8 master 9 remotes/origin/HEAD -> origin/master 10 remotes/origin/xxx 11 remotes/origin/master 12

手元のブランチ一覧を表示する時、
-aオプションを追加するとリモートのブランチ名も一緒にずらずらと表示されす。
このorigin/xxxってブランチがGitHub上に上がっているブランチです。
(複数remotesを登録しているなら.git/configファイルを開いてoriginが何に紐付いているか確認しても良いと思いますが)

はてさて、このorigin/xxxは「何時のブランチ」なんだい?
Gitは「分散型のバージョン管理システム」なので、
あなたのパソコンに入っているGitも「俺様が枝分かれしたバージョンシステム様なんだぜ」という訳で独立しているんですね。

なので、今所持しているoriginのブランチ達を一度捨てて、
GitHubにあるもので再度更新する操作をしなければ最新のブランチには置き換わりません。

bash

1# これを実行することでoriginの全てのブランチを最新の状態にしてくれる 2$ git fetch 3 4# 手元のxxxブランチは最新のものには置き換わってないので更新させる 5$ git checkout xxx 6$ git merge origin/xxx 7

この一連の手順を踏む事で手元のxxxブランチを最新の状態に更新することが可能となります。
このgit fetchgit mergeに慣れてきたら、
これらのコマンドを一括で行うgit pull origin xxxみたいなコマンドを利用しても良いでしょう。

Gitってこの辺「○○を実現する為の方法は1つではない」という特徴があり非常に複雑です。
私はGitにそこそこ詳しいのですが、
それでも実行するコマンドの流れで想定とは違う方向に動作する可能性はありますので、
「これってfetchからのmergeで良いっすか?」みたいな感じで一言聞くようにしています。

Gitにあまり詳しくないなら尚更!
「すみません、先輩。コマンドの流れを調べたらxxxでいけそうという事がわかったのですが、これで大丈夫ですか?」
こんな感じで確認するようにしてください。
rebaseのような扱いをミスると数時間の作業がぶっ壊れるようなヤバいコマンドもGitにはありますから、
このコマンドが安全か否かも分かってない初心者なら特に先輩を捕まえて質問責めする位で良いです。

teratail越しに教えられるのって、このコマンドは(比較的)安全だよくらいのもんですしね。

そのチーム内の作業に慣れてきたら「いつものでいいですよね?」くらいで良くなるはずです。
最初はコミュニケーションが大変かと思いますが頑張ってください。

投稿2022/01/22 01:12

miyabi-sun

総合スコア21158

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

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

pecchan

2022/01/22 01:42

土日でメンバに聞けない状態だったので助かりました! めちゃくちゃ丁寧で分かりやすい解説有難う御座います! ほんとですね!-aを付けたら沢山表示されました!! git fetch→git mergeを行う場合は、該当のxxxブランチで行って良いものでしょうか? それともdevelopなどに移って行うものなのでしょうか?
miyabi-sun

2022/01/23 00:33

git-mergeコマンドは 今セットしているブランチ(`git branch`コマンドで*マークつくやつ)に 引数で指定したブランチを「合流させる」コマンドです。 なので一度`git checkout xxx`でそのブランチに移動してから`git merge origin/xxx`コマンドを実行するのが正解となります。
pecchan

2022/01/23 03:14

重ね重ねすいません、有難う御座います!(><)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問