Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Git】リモートからローカルに取り込むコマンドまとめ

Last updated at Posted at 2021-04-11

【masterに取り込み、更新】リモートのmasterが更新されたため、ローカルのmasterに単純に取り込みたい

[branch上]
$ git checkout master

[master上]
$ git fetch
$ git merge

[now:masterに更新かかった状態]

[その他]
$ git branch [新しいbranch切る]
$ git branch -D [先程までのいらないbranch]

#【master更新〜ブランチ取り込み】ブランチで開発中、リモートmasterに更新がかかった場合

[ブランチ上]
$ git stash

[master上]
$ git checkout master
$ git fetch
$ git merge
$ git checkout [先ほど作業していたブランチ名]

[ブランチ上]
$ git merge origin/master
$ git stash apply [先程、退避した履歴]
$ git stash drop [先程、退避した履歴]

##ローカルのmasterに更新をかける

  • git stash:変更の退避(addはしたけど、commitしてないもの)。commitしたくないけど、逃したい場合に有効。

【状態】
・ローカルのmasterと同じ状態
(master→ブランチに切り替えして、一度もcommitしていなければ)

  • git checkout master
    同じ状態にしてから、masterに切り替える。(そうでないと、ブランチの状態がそのままmasterに反映されるから。)

【状態】
・現在、ローカルのmasterにいます。

  • git fetch :もしくは、git fetch origin master

ここでおさらい。

ここで出てくるmasterの種類は3種類。

①(リモート)origin master
originというリモートブランチのmasterブランチ(デフォルトでは)

②(ローカル)origin/master:
リモートmasterを追跡する、リモート追跡ブランチ。かつ、ローカルmasterの上流ブランチ。

③(ローカル)master:
origin/masterを上流ブランチとする、作業ブランチ。

git fetchは①→②に取り込むコマンド。
あくまで、ローカルのブランチに引き出すだけ。書き換えられることはない。

【状態】
②(ローカル)origin/masterに、①(リモート)masterの更新がかかった

  • git merge:もしくは、 もしくは git merge origin/master

②→③に取り込むコマンド。

【状態】
③(ローカル)masterに、②(ローカル)origin/masterの更新がかかった。
(これで、masterのリモート〜作業ブランチまで全て同じ状態)

※ git fetch と git mergeを同時に行ったものが、git pullになります。
何をしているかわからずコマンドを打っている段階では、git pullは使わない方がいいですね。

##ローカルブランチに更新をかける

  • git checkout [先ほど作業していたブランチ名]:ブランチに、戻ります。

【状態】
・現在、ブランチに移動。ブランチの状態は、リモートのmasterを取り込む前のmasterの状態と同じ

  • git merge origin/master:すでに、fetchしてあるので、origin/masterをブランチにも取り込みます。

【状態】
・これで、ブランチも最新状態

  • git stash apply [先程、退避した履歴]:ここで先程退避した、ものを引っ張ってきます。
    $ git stash listで確認してください。)

【状態】
・ブランチは、最新の状態に、現在編集途中のものを取り込んだ状態になります。

  • $ git stash drop [先程、退避した履歴]:先程逃したものは必要ないので削除しておきます。

完成!!

#【ブランチ取り込みのみ】ブランチで開発中、リモートmasterに更新がかかって取り込みたい場合

$ git stash
$ git fetch
$ git merge もしくは git merge origin/master
$ git stash apply [先程、退避した履歴]
$ git stash drop [先程、退避した履歴]

上の説明と、同じなので省略。

#git pullについて

コマンド 説明
pull fetch + merge
fetch ダウンロード
push アップロード
merge リモートを、ローカルに合流(logに残しにくいが、初心者はコッチ)→checkoutはmaster
rebase リモートを、ローカルに合流(logに残しやすいが、ミスしやすい)→checkoutは作業ブランチ

#注意点
###①コミットが済んでいないのに、checkoutでブランチを切り替えるのはやめましょう。

なぜなら、(例)branch1→masterに切り替え

ブランチで更新した内容がそのままmasterに反映されるから。

###②編集途中の現branchから、別branchに切り替える時
→現branch内容が、別branchにも反映される

#参考
【初心者向け】git fetch、git merge、git pullの違いについて

【git stash】コミットはせずに変更を退避したいとき

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?