Githubでレポジトリ作成時に表示されコピペするコードやコマンドの意味は何か?commit -m、branch -M、push -uオプション、Quick setupやimport codeとは何かを実例で解説

github-prograshi(プロぐらし)-kv git/github
記事内に広告が含まれていることがあります。
[PR]

GitHubでレポジトリを作成すると、自分のローカルでコピペする用のコードが表示されます。

コピペすれば一瞬で済んでしまいますが、これらのコードの中にはgithubを理解するには欠かせない重要なコードがたくさん含まれています。

今後のgit操作でも頻出するコードが多いです。

ここでは、GitHubでレポジトリ作成時に表示される各コードについて解説しています。


4つのセクション

Githubでレポジトリを作成したときは以下のような画面が表示されます。

大きく4つのセクションに分かれています。

  1. Quick setup — if you’ve done this kind of thing before
  2. …or create a new repository on the command line
  3. …or push an existing repository from the command line
  4. …or import code from another repository

それぞれの内容は以下のようになっています。

セクション内容
Quick setupGithub Desktopに自動でレポジトリを作成する。あるいは、レポジトリのURLを使って自分でローカルのgitにremoteの情報を追加・変更する場合に使用します。
create a new repositoryローカル環境に新たにgitのレポジトリを作成する場合に使用するコマンドです。
push an existing repositoryローカルに既にgitを含むプロジェクトが存在する場合に、このレポジトリを追加して強制的にmainブランチ(あるいはmaster)を作成してプッシュします。
import codeGit以外のバージョン管理システム(Subversion, Mercurial, TTSなど)を使っている場合に、コードをインポートするときに使います。

いずれも新たに作成したGithub上のレポジトリにコードをpushするための処理です。

基本的には、1つ目の「Quick setup」と2つ目の「create a new repository」のどちらかを使います。

3と4はあまり使う機会はないかと思います。

以下で各セクション毎の詳細をまとめています。

注意点

一度git pushを実行してレポジトリにコードがpushされると、これらのデフォルトの画面は表示されなくなります。

Quick Setupで表示されている「Set up in Desktop」や「HTTPS」「SSH」のURLは開発後も参照できます。


Quick setup

Quick setupとは何か?

Quick setup(クイックセットアップ)は、レポジトリのURLが表示されます。

ある程度gitを使い慣れている人など、自分でリモートレポジトリ(Github上のレポジトリ)の情報を管理できる人はここを使います。

なお、Quick setupの後ろの、if you’ve done this kind of thing beforeはgitやgithubのレポジトリの設定をやったことあるなら、これ使ってねという意味です。

表示される選択肢は「set up in Desktop」と「URL(またはSSH)」の2種類です。


Set up in Desktopとは何か?

GithubはWEBブラウザからアクセスする意外に、デスクトップ版のアプリを使う方法があります。

デスクトップ版のGithubが既にPCにインストール済みの場合は「Set up in Desktop」をクリックします。

なおデスクトップ版のGithubのことを、Github Desktopと呼びます。


Github Desktopのインストール先

GitHub Desktop
Simple collaboration from your desktop

以下のようにダウンロードボタンが表示されます。


HTTPSとSSHとは何か?

「Set up in Desktop」の横には、他の選択肢として「HTTPS」「SSH」というタブが表示されています。

HTTPSはhttps://~といった通常のURLです。

SSHはHTTPSよりもセキュリティの高いアクセス方法で、タブをクリックするとSSH専用のパスが表示されます。

既にローカルレポジトリが存在する場合に、これらのURLをpush先のリモートブランチとして登録するときに使います。

接続方法パスの例
HTTPShttps://github.com/xxxxx/レポジトリ名.git
SSHgit@github.com:xxxxx/レポジトリ名.git
合わせて読みたい

リモートレポジトリのURLをローカルに登録する方法の詳細は、下記をご参考ください。

【Git】リモートレポジトリ(origin)を変更・削除・上書き・追加する方法


SSHとは何か?

SSHは秘密鍵と公開鍵を使って通信をする方法です。SSHとはSecure Shell(セキュア シェル)の略です。

企業などのプロジェクトの場合SSHでアクセスするのが一般的です。

SSHを使うには、ローカルで秘密鍵&公開鍵を作成する必要があります。

公開鍵のコードをgithubに登録することで使用が可能になります。githubへの公開鍵登録は、settings > SSH and GPG keys > New SSH keyの流れで登録可能です。


create a new repository on the command line

2つ目のセクションは「create a new repository on the command line」です。

「コマンドライン(黒画面)を使って新たなレポジトリを作成する」という意味です。

各コードを実行する前(コマンドをコピペする前)に、ローカル環境でプロジェクトがあるディレクトリに移動しておく必要があります。

以下で各コードの内容について解説しています。


echo “# test” >> README.md

echo “# test” >> README.mdは、READMEファイルを作成するコマンドです。

echo "# test" >> README.md

この処理で、今いるディレクトリにREADME.mdファイルを作成し、中身に「# test」を書き込んでいます

「>>」はリダイレクト(追記)を指示する記号で、指定したファイルに内容を出力する指示です。指定したファイルがない場合はファイルを新規作成します。

README.mdの拡張子「.md」はマークダウン形式のファイルであることを表しています。

マークダウンはHTMLをより簡単に記述する書き方です。例えばh1タグで囲む場合、冒頭に「#」を記述するだけでh1タグになります。


git init

2行目のgit initは自分のPCにローカルレポジトリを作成するためのコマンドです。

gitが存在していないプロジェクトで、gitを使用するために使用します。initはinitializeの略で初期化という意味です。

git init


コード実行例

コードを実行すると以下のように表示されます。

$ git init
Initialized empty Git repository in 現在のディレクトリパス/.git/

現在のディレクトリ配下に「.git」という隠しディレクトリを作成し、空のGitレポジトリーを初期化しましたという内容です。

フォルダ名の前の「.(ドット)」は隠しフォルダであることを表しています。

中にはフォルダやファイルなど、gitを使うために必要なもの一式が入っています。

ここら辺のファイルを直接いじることはあまりありません。変更が発生しやすい処理はコマンドが用意されています。

.gitというフォルダが作成され、その中にGitの関連ファイルが入っていることを認識してれば問題ありません。


git add README.md

3行目のgit add README.mdは、1行目のecho "# test" >> README.mdで作成したreadmeファイルをステージに追加する処理です。

git add とは何か?

Gitの中でも最もよく使うコードの一つgit addが使われています。

git add パス

Gitではコードやファイルに作成や変更があった場合に、いきなりローカルレポジトリに反映させず、まずはステージング(またはインデックス)という状態を挟みます。

本番前といったニュアンスで、ステージングの段階ではまだコードの変更履歴には何も追加されません。

リモートレポジトリ(Github)
  ↑ push
ローカルレポジトリ
   ↑ commit
ステージ(インデックス)
   ↑ add   ← ココ
作業中のディレクトリ

git addすると指定したファイルやディレクトリがステージに追加されます。ステージに追加することを動名詞でステージングと呼びます。


git commit -m “first commit”

4行名はgit commit -m "first commit"です。git commitもGitの中でも最もよく使うコードの一つです。

git commitはステージにあるコードをレポジトリに反映する処理です。この処理にGitのコード履歴に変更内容が反映されます。

リモートレポジトリ(Github)
  ↑ push
ローカルレポジトリ 
   ↑ commit  ← ココ
ステージ(インデックス) 
   ↑ add
作業中のディレクトリ

git commitの「-m」オプションも非常によく使います。これは「message」の略で、 コードの変更履歴にメッセージをつけます

コミットに対するメッセージなので、コミットメッセージと呼びます。

ここでは、3行目の処理 git add README.md でステージングした変更内容(README.mdの新規追加)をGitのコード履歴に反映しています。

その際、コミットメッセージを「first commit」としています。

first commitは、慣習的に第1回目のコミットで使われるメッセージです。ここは空欄でなければfirst commit以外でも問題ありません。(誰が見ても作業内容がわかる端的なメッセージをつけるのが一般的です)

なお、メッセージが空だと「Aborting commit due to empty commit message.」というエラーが発生し、コミットできません。


コード実行例

$ git commit -m "first commit"
[master (root-commit) dc53f35] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 README.md


git branch -M main

5行目はgit branch -M mainです。これは、作業中のブランチの名前をmainに強制変更するコマンドです。

git branchはブランチに関するコマンドで、オプションによってブランチの作成、移動、名前変更などができます。

「-M」オプションは、強制的にブランチ名を変更するというオプションです。

git branch -M <ブランチ名>
-Mの補足

「-M」オプションは「-m」オプションと「-f」オプションを合わせたものです。

-m: ブランチ名の変更 (--move)
-f: 強制実行 (--force)


コード実行例

$ git branch -M main


コードを実行しただけでは何も表示されません。現在のブランチ名を確かめるには、git branchコマンドを実行します。

$ git branch
* main

ブランチ名が「main」になっていることがわかります。

なお、「*」は現在のブランチを表しています。


git remote add origin https://github.com/~/レポジトリ名.git

6行目のコマンドは git remote add origin https://github.com/~/レポジトリ名.git です。

これまでの作業はすべて自分が作業しているローカルレポジトリで行ったものです。まだ他のユーザーたちと共有できるGithub上のレポジトリ(リモートレポジトリ)には何も変更を加えていません。

リモートレポジトリにGitのコード履歴をプッシュするためには、まずリモートレポジトリをローカル環境に登録する必要があります。

それが、git remote addの処理です。

git remote add <任意のリモートレポジトリ名> <リモートレポジトリのURL>

リモートレポジトリのURLを毎回指定してプッシュするのは大変なので、リモートレポジトリ名いわゆる、ニックネームをつけます。

慣習的に「origin」が使われるのが一般的ですが、origin以外でもなんでもかまいません。名前を変えれば、push先のリモートレポジトリを複数設定することもできます。

詳細については 【Git】リモートレポジトリ(origin)を変更・削除・上書き・追加する方法 をご参考ください。



コード実行例

$ git remote add origin https://github.com/~/レポジトリ名.git

コードを実行しただけでは何も表示されていません。リモートレポジトリが登録されているかを確認するには、git remote -vコマンドを実行します。

$ git remote -v
origin    https://github.com/〜/レポジトリ名.git (fetch)
origin    https://github.com/〜/レポジトリ名.git (push)

originというリモートレポジトリ名で指定したURLが登録されていることがわかります。


git push -u origin main

最後の7行目はgit push -u origin mainです。ローカルレポジトリのGitのコード履歴をリモートレポジトリ(Github)にプッシュする処理です。

リモートレポジトリ(Github)
  ↑ push   ← ココ
ローカルレポジトリ
   ↑ commit
ステージ(インデックス)
   ↑ add
作業中のディレクトリ

git pushも最も頻繁に使用するコードの一つです。git pushは以下のように使います。

git push [オプション] <リモートレポジトリ名> <ブランチ名>

git push -u origin mainは、6行目で登録したリモートレポジトリにmainブランチの内容をプッシュするという処理です。


ブランチ名の省略

git push origin mainという記述はよく使いますが、一つ知っておくべき重要なことがあります。それはブランチ名が省略されているということです。

git pushは本来次のように使います。

$ git push <リモートレポジトリ名> <ローカルブランチ名>:<プッシュ先のリモートレポジトリ名>

ブランチ名はローカルレポジトリのブランチ名と、push先のリモートレポジトリ名を記述します。

ローカルレポジトリのブランチ名と、push先のリモートレポジトリ名が同じ場合に、「:リモートレポジトリ名」の記述を省略することができます。

git push origin main

↓↑ 同じ

git push origin main:main


仮に、ローカルレポジトリのmainブランチの内容を、リモートレポジトリのtestブランチに送りたい場合は以下のように記述します。

git push origin master:test


「-u」オプションと上流ブランチ

「-u」は、指定したリモートレポジトリのブランチを上流ブランチ(upstream)として設定するオプションです。

上流ブランチとして設定すると、git push するときにリモートレポジトリ名とブランチ名を省略できます

すなわちgit pushだけでプッシュできるということです。

注意点

上流ブランチはローカルレポジトリのブランチ毎に設定するものです。 git push -u origin main は、ローカルのmainブランチの上流ブランチにoriginのmainブランチを指定するという意味です。

このため、他のブランチでブランチ名を省略したpushをしたい場合は、別途上流ブランチを設定する必要があります。


上流ブランチがある場合とない場合のpushの違い

上流ブランチを指定していない場合はpushは以下のようになります。

git push <リモートレポジトリ名> <ブランチ名>

↓ 上流ブランチが設定してある場合

git push


上流ブランチの確認方法

上流ブランチが設定してあるかどうかはgit remote -vvコマンドを実行することで確認できます。

#上流ブランチがない場合
$ git branch -vv
* main dc53f35 first commit

#上流ブランチある場合
$ git branch -vv
* main dc53f35 [origin/main] first commit

上流ブランチがある場合は、[リモートレポジトリ名/リモートレポジトリのブランチ名] が表示されます。

よって、このローカルレポジトリのmainブランチでgit pushを実行すると、リモートレポジトリ名originのmainブランチにpushを行います。

なお、ブランチ名の横の 数値(例 dc54f35)は最新のコミット番号、末尾の「first commit」はコミットメッセージです。

リモートブランチ確認時の注意点

リモートブランチを確認するコマンド git branch -vv は「v」が2つ必要です。

「v」が一つだけだと、上流ブランチが設定されていても画面上に表示されません。

#「v」が2つの場合
$ git branch -vv
* main dc53f35 [origin/main] first commit
#「v」が1つの場合
$ git branch -v
* main dc53f35 first commit


–set-upstream

なお「-u」オプションは「--set-upstream」オプションの省略形です。

オプションの前にハイフンが2つ「--」つくものをロングオプションと呼びます。冗長な書き方でオプションの実行内容が記載されている場合がほとんどです。

オプションの前にハイフンが1つ「-」つくものをショートオプションと呼びます。ハイフンの後にアルファベット1文字が続く、省略形の記述方法です。

git push -u origin main

↓↑ 同じ

git push --set-upstream origin main

同じ処理でも人によってショートオプションとロングオプションのどちらを使うかが分かれたりしますが、驚く必要はありません。



コード実行例

「-u」つきのgit pushを実行すると以下のようになります。

$ git push -u origin main
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 228 bytes | 228.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/〜/レポジトリ名.git
 * [new branch]      main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.

*[new branch] main -> main
ローカルブランチmainのデータを、リモートブランチmainにプッシュしていることを示しています。

その際、リモートブランチに新たにブランチを作成してことを明示しています。

Branch 'main' set up to track remote branch 'main' from 'origin'.

ローカルレポジトリのmainブランチに、リモートレポジトリ名originのmainブランチを上流ブランチとしてセットしたことを示してます。


push an existing repository from the command line

3つ目のセクションは「push an existing repository from the command line」です。

既にGit管理されたローカルレポジトリがある場合に、コマンドライン経由でリモートレポジトリ(Github)にプッシュします。

処理内容は2つ目のセクションの5~7行目と同じです。


import code from another repository

4つ目のセクションは「import code from another repository」です。

他のレポジトリのコードをインポートするという意味です。

これは、Git以外のコードのバージョン管理システムを使った既存プロジェクトのレポジトリをプッシュする場合に使用します。

Githubはバージョン管理システムとしてGitを使っていますが、実は世の中にはGit以外にもバージョン管理システムがあります。

主要なところでは、Subversion, Mercurial, TFSがあります。

GithubではこれらのGit以外のバージョン管理システムを使ったレポジトリをインポートすることができます。

なお、インポートするプロジェクトはURLで指定します。

上記のURL入力窓に移管元のレポジトリのURLを入れると、そのレポジトリの内容がGithubにインポートされます。

タイトルとURLをコピーしました