3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ターミナル操作】cloneしたデータの作業内容をcommitしてpushする前にpullしてmergeしよう

Last updated at Posted at 2025-07-28

0. はじめに

この記事は、git初心者がプロジェクトにアサインした際に、「GitHub上に保存された開発データをcloneし、ローカルリポジトリで作業したものをcommitして、リモートリポジトリにpushしてPull Requestを出す。」という基本操作が、ターミナル上でできるようになることを目的に書いたものです。

説明途中に次のような用語解説など入れていますので、専門用語に振り回されて困っている方の一助になれば幸いです。

【用語解説】リポジトリとは

ここでは「リポジトリとはディレクトリだ」と認識してもらって良いです。

※厳密にはかなり語弊がありますが、周辺知識が不足しているだろう初心者の段階で、以下に記す細かい定義に気を取られるよりも、本記事の目的に集中するためには「ディレクトリだ」で一旦気持ちを整理する方が良いです。

以下は学習に余裕のある人だけで構いませんが、厳密なリポジトリの定義は次のようになっています。

プロジェクト開始以来の全てのリビジョンを集めて記録しているデータベースのこと。
(濱野純.入門Git.秀和システム,2014)

リビジョン(revision)とは、プロジェクトのある時点ごとの状態を記録したもののことであり、プロジェクトの状態と、リビジョン間の変更に関するその他の情報が記録されます。

データベースとは、データを1か所に集めて管理しやすくしたものです。ただし厳密にはディレクトリ(ファイル)とは違い、プログラムに隷属したデータ群ではなく、独立させてデータベース管理システムにより統合して管理・運用するためものです。

0.1. 環境

  • OS: macOS Sequoia 15.5, Intel Core i5 チップ
  • 開発ツール: Visual Studio Code 1.102.1

0.2. 前提

この記事では次のことが完了していることを前提とします。

0.2.1. GitHubアカウントが作成されていること

スクリーンショット 2025-07-21 14.14.45.png

0.2.2. SSH Keyが設定されていること

GitHubリポジトリ(リモートリポジトリ)へのアクセス認証でSSHを利用するため、公開鍵認証に必要なSSH Keyの作成と、GitHubへの公開鍵登録が完了されていること。
※この設定は初心者には難しいので、OJTリーダーに設定してもらってください。

1. GitHubのリモートリポジトリをcloneする

では初めに、プロジェクトの開発データをローカルにcloneしましょう。
※ここではすでにcloneするためのプロジェクトのリモートリポジトリ(development-repository)が作成されているものとします。

【用語解説】cloneする

リモートリポジトリをローカルのディレクトリに複製することを、「リモートリポジトリをcloneする」といいます。

特に、このセクションで紹介しているgit cloneコマンドを用いると、元のリモートリポジトリを「origin」として参照できるように自動的に設定されます。

スクリーンショット 2025-07-21 14.24.38.png

1.1. リモートリポジトリのSSH Keyをコピーする。

後ほどgit cloneコマンドを使用する際に使うので、リモートリポジトリのSSH keyをコピーしておきます。

28FDEDFF-1708-4D17-A455-930FE4D79718_1_201_a.jpeg

1.2. ローカルにディレクトリを作成する。

cloneする場所となるディレクトリを作成します。ここではディレクトリ名を、project-nameとします。

ローカルにディレクトリを作成する
mkdir project-name

1.3. リモートリポジトリをcloneする

作成したproject-nameディレクトリ内に、リモートリポジトリのdevelopment-repositoryをcloneします。

リモートリポジトリをcloneする
"ディレクトリ内に移動"
cd project-name
"git clone [コピしたいリモートリポジトリのSSH Key]"
git clone git@(1.1.の赤い部分)

成功すると、次のような実行結果が表示されます。

実行結果
Cloning into 'development-repository'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (4/4), done.

これ以降、このproject-nameディレクトリにcloneしたdevelopment-repositoryは、「ローカルリポジトリ」と呼ぶこととします。

2. ローカルリポジトリでの作業内容をcommitする

それでは早速このローカルリポジトリを使って業務を行い、commitしましょう。ただし、業務を行う前に、まずは「ブランチを切る」ことから行います。

【用語解説】commitする

作業記録をローカルリポジトリに記録することを、「commitする」と言います。

より厳密には、「前のリビジョンに基づいて、それに変更を加えた新しいリビジョンを作ること」です。

【用語解説】ブランチを切る

ブランチ(branch:枝)を作成することを、「ブランチを切る」といいます。このブランチに関しては非常に重要な概念であるものの、説明もその分長くなってしまうため、「作業に必要な分岐を作成する」と理解してください。

詳細をどうしても今知りたい!という方は以下の記事を参考になさってください。

参考資料:

2.1. ブランチを切る

まず、cloneしたローカルリポジトリ内に移動してからブランチを切ります。

ブランチを切る
"cloneしたローカルリポジトリ内に移動"
cd development-repository
"git branch [ブランチ名]"
git branch feature/add-sample

なお、ブランチ名やその管理方法については業界でおおよそメジャーな考えがあります。以下を参考にしてください。

参考資料:

ブランチが切れているかは、git branchコマンドで確認できます。

ブランチを確認
% git branch
実行結果
  feature/add-sample
* main

*:現在いるブランチ

ブランチ名を変更する方法 現在チェックアウト中のブランチにて以下を実行
ブランチ名を変更
"git branch -m [新しいブランチ名]"

※チェックアウトしていない場合は以下を実行

ブランチ名を変更
"git branch -m [古いブランチ名] [新しいブランチ名]"
ブランチを削除する場合 `git branch`に`d`オプションを用いると、ブランチを削除することができます。
指定したブランチを削除する
"git branch -d [ブランチ名]"
git branch -d feature/add-sample

なんでmainブランチから作業ブランチ切ってんの!?

上記で紹介しているGit-flowの知識を持っている方は、この記事がmainブランチから作業用のブランチを切っていることに違和感(危機感?)を抱くかもしれません。

開発作業を行う場合、main(またはmaster)ブランチから、開発するためのブランチとしてdevelopブランチを切ったうえで作業用ブランチを切るのが、より一般的な手順となります。

しかしこの記事では、「GitHub上に保存された開発データをcloneし、ローカルリポジトリで作業したものをcommitして、リモートリポジトリにpushしてPull Requestを出す」ことを最優先目標としており、Git-flowなどの管理概念は優先順位を落としているため、詳細を省いています。

この記事を読んでいる初心者の方でOJTリーダーがついておられる方は、プロジェクトで作業ブランチを切る前に、ブランチを切って良いブランチかどうかを確認しても良いかもしれません。

2.2. ブランチをcheckoutする

現時点ではfeature/add-sampleは作成しましたが、実行結果からまだmainブランチにいることがわかります。これではせっかく作業用のブランチを作った意味がないので、feature/add-samplecheckoutしましょう。

【用語解説】checkoutする

ブランチを移動する・切り替えることを「checkoutする」と言います。

より厳密には、リビジョンに記録されている内容を展開したディレクトリ領域を「ワークツリー」と呼び、リポジトリに記録されている内容をワークツリーに展開・反映する行為を「チェックアウトする」といいます。

checkout
"git checkout [ブランチ名]"
git checkout feature/add-sample

成功すると次のような実行結果になります。

実行結果
Switched to branch 'feature/add-sample'
ブランチを切ってcheckoutまで一括で行う方法 ブランチを作成し、checkoutする操作を一括で行いたい場合は、bオプションを加える
ブランチを切ってcheckoutもする
"git checkout -b [ブランチ名]"
git checkout -b feature/add-sample

2.3. プロジェクト作業を行う。

それではcheckoutしたブランチで作業を行いましょう。今回は作業としてsample-file.mdを作成したこととします。

スクリーンショット 2025-07-21 15.34.27.png

2.4. commitするファイルを指定する

git addコマンドを用いてsample-file.mdをcommitするファイルとして指定します。また、この操作は単にcommitするというだけではなく、ファイルをGitリポジトリの管理対象とするという意味を持っています。

"git add [指定するファイル]"
git add sample-file.md

2.5. commitする

ファイルを指定した後、git commitコマンドを用いてcommitし、これまでの状態を記録します。

commitoする
'git commit -m "コメント"'
git commint -m "sample-fileの追加"

実行すると以下のように表示されました。

実行結果
[feature/add-sample 45ec490] sample-fileの追加
 1 file changed, 1 insertion(+)
 create mode 100644 sample-file.md

3. リモートリポジトリにpushする

ローカルリポジトリの作業記録を、GitHubで管理されているリモートリポジトリにpushしましょう。

【用語解説】pushする

ローカルリポジトリの作業記録を、リモートリポジトリに送信すること。

3.1. mainブランチを更新する

まずはpushする前に、mainブランチが更新されているかをgit fetchコマンドで確認します。

mainブランチを更新する
"mainブランチにcheckoutする"
git checkout main
"mainブランチのリモートブランチの最新の変更を、ローカルリポジトリに取得する"
git fetch

もしリモートリポジトリのmainブランチの方がローカルリポジトリのmainブランチよりも最新の状態である場合は、git pullコマンドを用いてローカルリポジトリのmainブランチも最新の状態にしましょう。

mainブランチを最新の状態にする
git pull
main以外のブランチを更新する場合

Pull Requestを出したのち、レビュワーからGitHub上で修正提案を受けることがあります(Suggested change)。そういった場合は修正提案を採用する場合はそのままcommit suggestionボタンを押してGitHub上で修正提案をcommitして、ローカルリポジトリには、以下を実行して更新することができます。

main以外のブランチ(今回はfeature/add-sample)を最新の状態にする
"git pull origin [ブランチ名]"
git pull origin feature/add-sample

3.2. pushするブランチに最新のmainブランチをmergeする

もしmainブランチが最新の状態に更新された場合、先ほどまで作業していたfeature/add-sampleブランチに、mainブランチをmergeしましょう。

【用語解説】mergeする

2つのブランチを統合すること。

作業ブランチにmainブランチをmergeする
"作業ブランチにcheckoutする"
git checkout feature/add-sample
"mainブランチをmergeする"
git merge main -m "コメント"

※コメントなしでも実行可能ですが、その際は別対応が必要になるので、それについては @kuramoto30 氏の開発用(feature)ブランチにmain(master)ブランチをマージした時 初心者向けを参考にされてください。

3.3. リモートリポジトリにpushする

それでは、リモートリポジトリにpushしていきましょう。

リモートリポジトリにpushする
"git push -u origin [ブランチ名]"
git push -u origin feature/add-sample

※originとはclone元のリモートリポジトリのことを指します。
実行結果は次のようになりました。

実行結果
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 380 bytes | 380.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: 
remote: Create a pull request for 'feature/add-sample' on GitHub by visiting:
remote:      https://github.com/yunokizono-ferix/development-repository/pull/new/feature/add-sample
remote: 
To github.com:yunokizono-ferix/development-repository.git
 * [new branch]      feature/add-sample -> feature/add-sample
branch 'feature/add-sample' set up to track 'origin/feature/add-sample'.

4. Pull Requestを出す

最後の仕上げとして、Pull Requestを出していきましょう。
git pushコマンドにより、GitHubブラウザでは次のようにpushされたことを知らせる表示がされます。

スクリーンショット 2025-07-26 17.33.48.png

ここで、「Compare & pull request」をクリックし、

スクリーンショット 2025-07-26 17.43.01.png

必要事項を入力して「Creat pull request」を押せば、Pull Requestの完了です。

スクリーンショット 2025-07-26 17.47.12.png

5. おわりに

いかがでしたでしょうか?

もしこの記事で実際に取り組まれた方で、「ここが分かりにくかった」、「この部分についてもっと詳しく書いてほしい」などのご意見をコメントしていただけましたら、その内容を検討して可能な限り反映できたらと思います。

ご意見お待ちしております。

参考資料

記事作成にあたり、以下を参考にさせて頂きました。心より感謝申し上げます。

書籍

  • 濱野純.入門Git.秀和システム,2014
  • 増永良文.Information & Computing-116 リレーショナルデータベース入門[第3版]-データモデル・SQL・管理システム・NoSQL-.サイエンス社,2021

Webサイト

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?