5
9

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で管理する方法 gitのインストールから〜

Last updated at Posted at 2020-01-01

概要

 この記事は初心者の自分がRESTfulなAPIとswiftでiPhone向けのクーポン配信サービスを開発した手順を順番に記事にしています。技術要素を1つずつ調べながら実装したため、とても遠回りな実装となっています。

 前回のDjangoのテンプレート機能を使ってみるまでに作ったシンプルなwebAPIをここから改造します。しかしできれば改造前のコードをそれぞれ保存し、コードを壊した際に戻したり、他の目的に流用できるようにしたいです。ただし単にコードをコピーして保管するのは管理が煩雑になる。そこでgitを活用してコードのバージョン管理を行います。

参考

環境

Mac OS 10.15

手順

  • 開発マシンにGitをインストール
  • プロジェクトフォルダをgitのローカルリポジトリにする
  • githubにamiAppのプロジェクトを作成

開発マシンにGitをインストール

既にGitがインストールされていないか確認する。

$ git ―version

自分の場合、既にgitがインストールされていました。Xcodeと同時にインストールされるようなので、とりあえずこれを使います。
check-git-version.png

インストールする場合、macでしたらbrewでインストール出来ます。

$ brew update
$ brew install git

プロジェクトフォルダをgitのローカルリポジトリにする

ローカルのプロジェクトディレクトリ …/amiApp/ami_coupon_api をgitのローカルリポジトリにします。ターミナルでami_coupon_apiディレクトリに移動して、以下のコマンドを実行するだけです。

$ git init

githubにamiAppのプロジェクトを作成

githubをリモートリポジトリとして利用するので、githubのアカウントを作ってサインインします。
サインインしたら、左側のフレームの「Repositories」の右側の「New」ボタンを押して、リポジトリ作成画面に進みます。
signin-github-mark.png

リポジトリ作成画面でリポジトリ名や説明などを入力して、Create repositories ボタンを押すとリポジトリが作成されます。今回はこんな設定にしました。

リポジトリ名:ami_api
説明:webAPI(python)とネイティブアプリ(swift)の連携を学習するために作った居酒屋アプリ。クーポンの配信などが出来ます。
Private/Public: Public (コードが公開されます。もともと公開する予定なのでPublicにしています。)

これまでに作成したコードをコミット対象ファイルにする

git add コマンドでgitで管理したいディレクトリ、ファイルをコミット対象に設定します。

対象のプロジェクトのディレクトリでgit statusコマンドを実行し、状況を確認します。コミット対象にしていないファイルとディレクトリが赤く表示されます。まだ1つもaddしていないので真っ赤です。
check-gitstatus-001-mask.png

下記のコマンドでami_coupon_amiをコミット対象にします。

$ git add ami_coupon_api/

git status コマンドで確認すると、ami_coupon_apiディレクトリ配下のファイルがコミット対象に追加されて緑になっています。
git-local-add.png

他のファイルも同じ要領でコミット対象に追加します。全てのファイルを一括で追加する場合は、下記のコマンドを使います。

$ git add --all

現時点の資材をローカルリポジトリにコミットする

ここまでに開発した内容を残すため、まずは自分のPCに作ったローカルリポジトリへコミットします。まずは誰がコミットしたか分かるように、ユーザ名を登録します。

$ git config --global user.name “ユーザ名”

登録した名前は git config ―list コマンドで確認できます。

次にローカルリポジトリへコミットします。コミットする際は-mオプションで、コメントを残します。

$ git commit -m “コメント本文”

上手くいくとこんなレスポンスが返って来ます。
git-first-commit-mask.png
git-first-commit-log.png

リモートリポジトリにプッシュする

今の時点では自分のPC内で資材を管理している状態です。複数人で作業する場合にコードをシェアしたり、資材をバックアップするには、Githubで作成したリモートリポジトリにプッシュします。

まずは以下の手順でプッシュ先のリモートリポジトリを登録します。


  1. Githubのマイページで先ほど作成したリポジトリのURLをコピーする(ここで確認できます)
check-repository-url-github.png
  1. git remote addコマンドでリモートリポジトリを登録する。(紐付け名は今後プッシュする際に使うので忘れないようにメモしておく)
$ git remote add [紐付け名] [Githubに作成したリポジトリのURL]

次に、git push コマンドで登録したリモートリポジトリにプッシュします。今回は初回なのでmasterブランチにプッシュします。コマンドを実行するとGithubのユーザ名とパスワードの入力を求められます

$ git push [紐付け名] [プッシュ先ブランチ]

Githubのマイページを更新して、プッシュしたコードが追加されている事を確認します。
check-pushed-at-github.png

webAPI改造のためのブランチを作成し、作成したブランチに移動する。

これからwebAPIの改造をするので、改造用のブランチを作成します。まずは既に存在するブランチを確認します。

$ git branch
check-git-branch-list-mask.png

自分の場合、存在するブランチは master のみでした。「*」の付いているブランチが現在のブランチです。

masterブランチをコピーしてapi改造用のブランチを作成します。
次はレスポンスをJson形式で返すように改造する予定なので、ブランチ名をdevelop_chengeToJsonとしました。

なお、通常の複数人での開発では git flow という標準的なブランチ運用ルールを適用する事が多いです。その場合、小中規模の変更についてはdevelopブランチではなく、その更に枝分かれした feturebacklogというブランチ名で管理しますが、自分の場合は1人で開発なので、developブランチをどんどん作成して改造していく事とします。

コピー元のブランチにいる状態で、下記のコマンドを実行します。

$ git branch [コピーして作成するブランチ名]

新しいブランチdevelop_changeToJason)が出来ました。
git-make-new-branch-mask.png

作成したブランチに移動する時は、以下のコマンドを使います。

$ git checkout [作成したブランチ名]

ちなみに、checkoutコマンドに-bオプションを付けると新しいブランチの作成と同時に作成したブランチに移動出来ます。恐らく通常はこちらのコマンドを使う方が多いと思います。

$ git checkout -b [コピーして作成するブランチ名]

作成したapi改造用ブランチをリモートに登録する。

ローカルリポジトリに新しいブランチを作成したので、リモートにプッシュします。

git push [紐付け名] [作成したブランチ名]

なお、-u オプションをつける事で次回から[紐付け名]を省略が出来ます。

git push -u [紐付け名] [作成したブランチ名]

Githubのマイページを更新すると develop_chengeToJson ブランチが増えています。
check-new-branch-at-github.png

以上です。

次回は、JSON形式でレスポンスをするwebAPIを作成します

5
9
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
5
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?