LoginSignup
60
36

More than 3 years have passed since last update.

【超初心者】実務で初の「git push origin ****」まで(めちゃくちゃヒヤヒヤしました)

Last updated at Posted at 2020-04-08

本記事を書いた理由

実際に業務で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への理解が一気に深まりました。

やっぱ実務で触るのが成長できますね!

60
36
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
60
36