##はじめに
git-flowやGitHub Flowを学習し始めると、ブランチを分けてファイルを管理するようになります。
そして、変更内容がなぜか別ブランチにも反映されるなんて珍事件を一度は経験すると思います。
それではブランチを分ける意味がなくなってしまいます。
この記事では、専門用語を解説したうえで、
変更内容を"別ブランチに"反映させない方法を解説していきます。
###対象者
「変更内容がなぜか別ブランチにも反映されて困っている」
「とりあえずGitの勉強をしたい」
というGit初心者向けです。
この記事では変更内容を"別ブランチに"反映させない方法について説明しています。
そのため、Gitコマンドの仕組みなどについては詳しくは説明していません。
わからない人向けに参考サイトを用意しましのでご参照ください。
では、さっそく進めていきましょう!
###専門用語
Git...どのファイルを追加したか削除したかなどを管理するツール。
GitHub...Gitと提携してみんなとやり取りができるWebサイト。
ブランチ...作業を枝分かれさせる事。
masterブランチ...完成品用のブランチ。
developブランチ...開発用のブランチ。
リポジトリ...ファイルやフォルダを保存する場所。
コミット...どのファイルを追加したか削除したかなどを登録する事。
スタッシュ...コミットせずファイルを一時待避する事。
###環境
OS: macOS Catelina (バージョン10.15.4)
ターミナル: Terminal.app
git version: 2.24.2
##1.原因
変更内容をコミットまたはスタッシュしないで
別ブランチに移動した場合、
移動先の別ブランチにも同じ内容が反映されます。
コミットするかスタッシュして、別ブランチに反映させないようにしましょう。
スタッシュは、とあるブランチで作業中だけど別のブランチで他のことがやりたい
但し、作業が中途半端だからコミットはしたくない場合に使用します。
コミットする場合は2-1へ。
スタッシュする場合は2-2へ。
##2.対処法
Gitコマンドの仕組みはこちらの記事が参考になります。
[Gitでよく使うコマンド一覧]
(https://qiita.com/uhooi/items/c26c7c1beb5b36e7418e)
###2-1.コミットする場合
コミットしたい物を全て選択するには下記Gitコマンドを入力します。
git add .
コミットするには下記Gitコマンドを入力します。
xxxにはコミットのメッセージを入力します。
git commit -m "xxx"
GitHubのリポジトリに反映するには下記Gitコマンドを入力します。
xxxにはブランチ名を入力します。
git push origin xxx
コミット後に別ブランチを移動しましょう。
ブランチを移動するには下記Gitコマンドを入力します。
xxxには移動先のブランチ名を入力します。
git switch xxx
これで完了です。
###2-2.スタッシュする場合
スタッシュするには下記Gitコマンドを入力します。
git stash
スタッシュ後に別ブランチを移動しましょう。
別のブランチでの作業が終わったら、
元のブランチに移動しましょう。
ブランチを移動するには下記Gitコマンドを入力します。
xxxには移動先のブランチ名を入力します。
git switch xxx
退避した変更内容を戻しましょう。
まずは、退避した作業の一覧を確認しましょう。
確認するには下記Gitコマンドを入力します。
git stash list
下記のような表示が出てきます。
xxxは変更作業を行なったブランチ名です。
stash@{0}: WIP on xxx
stash@{1}: WIP on xxx
.
.
.
stash@{5}: WIP on xxx
退避した作業を戻すには下記Gitコマンドを入力します。
例)stashの0番を戻すときはxxxには0を入力して下さい。
例)stashの5番を戻すときはxxxには5を入力して下さい。
git stash apply stash@{xxx}
これで完了です。
##おわりに
お疲れ様でした!
これでこの問題を対処できるようになりましたね。
この記事をきっかけに、より良いGit生活が送れていただければ嬉しいです!
##参考
masterからdevelopのブランチをきって、
— 霧崎さくや@Web Developer (@Sakuya_wd) June 12, 2020
developでファイル修正した後、
masterにcheckout/switchすると、
developのファイル修正が
masterにも反映されてるけど、
どうしたら反映させずにすむのだろうか?
Gitのプロの方わかりますか?#プログラミング初心者 #github
修正後にコミットしなければ残るので、そのことかと思いました!
— ウホーイ (@the_uhooi) June 12, 2020
ブランチを切り替える前にコミットするのがよくて、もしまだコミットしたくないならスタッシュに入れるのがよさそうです😌