##本記事を書いた理由
実際に業務でGitを使って編集したファイルをgit push
することができたので、自分の勉強用・記録用として残します。
取り急ぎ勉強中なので簡単に書きますが、誰が見てもわかるようにリライトしていきたいです。
##今回のケース
リモートリポジトリのソースコードをクローンし、開発用として新たに作成されたブランチ(ここでは「branchA」という名前のブランチとします)にプッシュする。
##実際に行った手順
###1.git cloneでローカルにクローンを作る
まずはリモートリポジトリのソースコードをローカルにクローン(複製)する。
その前にディレクトリ移動用のLinuxコマンドcd
を使用してソースコードをクローンしたいディレクトリに移動しておく。
そして以下のコマンドを実行↓
$ gti clone リモートリポジトリのURL(〜.git)
これで自分のPC(ローカル)にリモートリポジトリのソースコードと全く同じものができる。
後述するが、git clone
すると作業ブランチはmasterブランチになるので、あらかじめ開発用(作業用)ブランチがわかっているならば、以下のコマンドでブランチを指定してクローンすることが可能。
(masterブランチのままプッシュしてしまったらヤバイんですよね?多分)
$ git clone branchA リモートリポジトリのURL(〜.git)
上記コマンドはこの記事の通り↓
リモートから特定のブランチを指定してcloneする
これ、後から調べて知ったのだが「これしたらすぐできるじゃん」、ということで今後このコマンドを使うことを決めた。
(また1つ勉強になった)
※以降の内容はgit clone
で作業ブランチがmasterになっているケースで話を進める。
###2.git checkoutでローカルリポジトリのブランチを開発用ブランチに切り替える
git clone
でリリモートリポジトリをクローンした場合、作業ブランチがmasterブランチになるので、今回の開発用のブランチ「branchA」に切り替える必要がある。
ただ、ローカルリポジトリにはまだ開発用ブランチである「branchA」がないので以下の作業が必要。
- ローカルリポジトリに開発用ブランチ「branchA」を作成する
- ローカルリポジトリの作業ブランチ(HEAD)をmaster→branchAに切り替える
git checkout -b
コマンドを使えば1回の実行で行えるので以下のgitコマンドを実行する。
$ git checkout -b branchA origin/branch
これでbranchAを作成して作業ブランチをbranchへ切り替えることができる。
ローカルリポジトリの作業ブランチ切り替えに関してはこちらの記事にまとめましたので併せて読んでいただければと思います↓
「git cloneしたソースコードの作業ブランチを切り替えて」と言われたので先輩に教わりながらやってみた
簡単に書くと以下のコマンドを1行で実行しているということ。
//git branchコマンドで新たにブランチを作成する
$ git branch branchA origin/master
//git checkoutコマンドで作業ブランチを切り替える
$ git checkout branchA
###3.git pullで最新のリモートリポジトリの開発ブランチの状態をローカルリポジトリに取り込む
次にクローンしたリモートリポジトリの開発ブランチの状態最新の情報をローカルリポジトリに取り込む。
自分がgit clone
でクローンした時点のリモートリポジトリから他の人が変更分をプッシュしたりして、リモートリポジトリの内容はどんどん更新されていくので、その最新の状態を取り込む。
そのためにはgit pull
コマンドを使って以下のように記述する。
$ git pull origin branchA
これで、originリポジトリのbranchAブランチの最新情報(他の人が更新した内容)を取得(fetch)して自分のローカルリポジトリの作業ブランチに結合(merge)することができる。
(branchAにorigin/branchAを結合する)
ここに書いているが、git pull
コマンドはgit fetch
コマンドとgit merge
コマンドを一気に行うことができるコマンドである。
それぞれのコマンドを使って実行すると以下の通り↓
//最新のリモートリポジトリの状態をローカルリポジトリに取得する
$ git fetch
//取得したリモートリポジトリの情報をローカルリポジトリに結合する
$ git merge origin branchA
git pull
コマンドを使うことで1行でできる。
(ネットにはあまりpullは使わない方が良いと書いていたが今はタスクがこなせたのでとりあえずOK)
git pull
についての詳しい説明は→こちら
git fetch
についての詳しい説明は→こちら
git merge
についての詳しい説明は→こちら
###4.git addで変更したファイルをステージに追加する
自分の作業ブランチが最新の状態にすることができたので変更をプッシュする準備に移る。
以下のコマンドで変更したファイルをステージに追加する。
(ワークツリー→ステージ)
$ git add ファイル名
###5.git commitで変更したファイルをローカルリポジトリに記録する
以下のコマンドでステージに追加された変更分をローカルリポジトリに記録する。
(ステージ→ローカルリポジトリ)
$ cgit commit -m "コミットメッセージ"
###6.git pushでリモートリポジトリに反映する
最後にコミットした変更をリモートリポジトリに反映する。
以下のコマンドで開発用のブランチであるorigin/branchA
にプッシュする。
$ git push origin branchA
これでローカルリポジトリの作業ブランチbranchA
の変更分をリモートリポジトリの開発用ブランチorigin/branchA
にプッシュ(反映)することができた。
##おわりに
とまあ、こんな感じで無事にファイルを修正してリモートリポジトリに変更分をプッシュすることができました。
実務未経験の人間がプッシュする瞬間はドキドキしまくりますね...
※ちなみに先輩にお聞きしたのですが、ローカルリポジトリに作成する作業ブランチの名前は任意でOKなのですが、混乱を防ぐためにoriginリポジトリのブランチ名に合わせた方が良いとのことでした。
(例)
originリポジトリのbranchBブランチで開発を進める場合は、ローカルリポジトリに作成するブランチはbranchBにする。
リモート:origin/branchB
ローカル:branchB
今日でGitへの理解が一気に深まりました。
やっぱ実務で触るのが成長できますね!