Git, GitHubとは? - 基本と最初のレポ
🇺🇸 English version: 01_Start_EN.md
このセクションでは, Git と GitHub を紹介し, 最初のリポジトリの設定について説明します
概要
- Git の基本
- GitHub の基本
- リポジトリを作成する ハンズオン
- 一般的な Git コマンドの概要
目次
- Git, GitHubとは? - 基本と最初のレポ
Git とは…
- Git とは, ソフトウェア開発のための バージョン管理 を提供するソフトウェアです.
- Linux カーネル開発を管理するツールとして2005年に開始.
- 無料で使えるオープンソースの分散バージョン管理システム.
バージョン?
履歴 ⌛
- アップデートするにつれて変化するファイルの状態.
チームワーク 💪
- 開発者同士で共同作業をすることができる.
バックアップ 💾
- 後で特定バージョンを呼び出すことができる.
バージョン管理の例
Google Docs | Kintone |
---|---|
GitHub とは…
- GitHub とは共同開発プラットフォームです
- コードを見たり見せたりできる場所です.
- Google Docs とちょっと似ていて, いろんな人たちがコードを同時に見たり編集できます.
Remote repositories
(リモートリポジトリ) と聞いたら, GitHub だなっと考えてください.
- 2008年に設立され, 現在はマイクロソフトの子会社です.
GitHub 例 - Apple
Appleが, パスワードマネージャーなどのアプリの開発者向けに, 強力なパスワードを生成できるよう支援するための一連のツールとリソースを無償公開している.
github.com/apple/password-manager-resources
アップル, 「Password Manager Resources」をオープンソースで公開 - ZDNet Japan
リポジトリの設定 - ハンズオン
ローカルでの設定
- フォルダを作成する.
- フォルダを Git で管理するように構成する.
GitHub の設定
- GitHub で “フォルダ” のようなものを作成する.
Repository
(リポジトリ) と呼ばれています.
ローカルと GitHub を接続する
- 接続するように2つを構成する.
- ローカル側でファイルを作成して Git コマンドを実行すると, ファイルは GitHub に表示されます.
ローカルGitリポジトリを作成する
⚠️ 準備ガイド, 準備内容 - 00_Prep.md, に記載されている手順をすでに完了していることを確認してください。
⚡ コマンドはどこで実行しますか?
- Mac: ターミナル を使う
- Windows: Command Prompt を使う
-
アクセスしやすいフォルダーに移動し,
learning_git
という名前のディレクトリを作成します.cd Documents mkdir learning_git cd learning_git
-
pwd
コマンドを使用して, 正しい場所にいることを確認しますpwd /Users/YourUserName/Documents/learning_git
-
git init
コマンドで git リポジトリを初期化します.git init Initialized empty Git repository in /Users/YourUserName/Documents/learning_git/.git/
⚡ Repository (リポジトリ) は, Repo と短縮されて呼ばれることもあります.
README.md ファイルの追加
-
README.md ファイルを作成します.
touch README.md
-
README.md ファイルにリポジトリの説明を追加します.
vi README.md # また code README.md
# Learning JS Repo JavaScript 講義と課題のリポジトリです.
⚡ README.md ファイルは, ソフトウェアや git リポジトリの目的や使用方法を説明するために使用されます.
Git のステータスを確認する
git status
コマンド
- 作業ディレクトリとステージングエリアを表示します
Changes to be committed
: どのファイルに変更が加えられているのか確認できますUntracked files
: どのファイルは Git で追跡していないのかを確認できます
画像を確認すると, README.md を追跡する必要があることがわかります
git status
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.md
nothing added to commit but untracked files present (use "git add" to track)
ステージングエリアにファイルを追加
git add <file/folder>
- ファイル/フォルダーをステージングエリアに追加するコマンド
git add README.md
現在README.mdはステージングエリアに存在します
git status
On branch main
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README.md
Gitリポジトリにファイルを追加
git commit -m "message"
- ファイル/フォルダをリポジトリに追加するコマンド
- Git - git-commit Documentation
README.mdがリポジトリに追加されました!!
README.md
がmain
ブランチに追加されたことが分かります
git commit -m "README file created"
git status
$ git commit -m "README file created"
[main (root-commit) 03098e7] README file created
1 file changed, 3 insertions(+)
create mode 100644 README.md
$ git status
On branch main
nothing to commit, working tree clean
GitHub リポジトリを作成する
リポジトリを作成する
learning_git
という名前のリポジトリを作成します
Initialize this repository with a README.md
のチェックボックスは、選択を外してください
Local Git –> GitHub
repository を push
しましょう!
GitHub の Clone or download
ボタンをクリックし, HTTPS リンクをコピーして URL を取得します
git remote add origin <link>
- ローカルリポジトリを GitHub のリモートリポジトリに接続します
git remote
はリモートリポジトリを管理するコマンドです- Git - git-remote Documentation
git remote add origin https://github.com/Your_GitHub_UserName/learning_git.git
git push -u origin main
端末からの結果
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 298 bytes | 298.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: This repository moved. Please use the new location:
remote: https://github.com/ahandsel/learning_git.git
To https://github.com/ahandsel/learning_git.git
* [new branch] main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.
デバッグ
ローカルと GitHub の間で同期する最初のリポジトリを設定するときに, ログイン問題が発生する可能性があります。
-
リモートリポジトリ設定を削除
git remote remove origin
- 新しいパーソナルアクセストークンを作成する
- github.com/settings/tokens/new
- 端末から GitHub アカウントにログインするときに, Github パスワードの代わりにトークンを使用します
-
もう一度試してみましょう
git remote add origin https://github.com/Your_GitHub_UserName/learning_git.git git push -u origin main
- Github.com のリポジトリをチェックして, プッシュが機能したことを確認します。
https://github.com/
Your_GitHub_UserName/learning_git.git
Documentation
Hands-on A が完了しました
Git を初期化する | GitHub を設定する | ローカルリポジトリを作成してプッシュする |
---|---|---|
git init git remote add origin |
github.com/new | git status git commit -m |
Git の基本的なコマンドの概要
Git での変更の保存方法
スペース間でアイテムを転送する2つのコマンドがあります:
git add
&git commit
ファイル, フォルダの変更が保存される3つのスペースがあります:
working directory
(作業ディレクトリ)staging area
(ステージングステージング)repository
(リポジトリ)
[ working directory ✍️ ] | |
↘️ git add 📥 ↘️ |
|
[ staging area 📂 ] | |
↘️ git commit 💾 ↘️ |
|
[ repository 🗄️ ] | |
↘️ git push 🔄 ↘️ |
|
[ remote repository (GitHub) 🌐 ] |
working directory, git add
, staging area
➡️ | [ working directory ✍️ ] |
➡️ | ↘️ git add 📥 ↘️ |
➡️ | [ staging area 📂 ] |
↘️ git commit 💾 ↘️ |
|
[ repository 🗄️ ] | |
↘️ git push 🔄 ↘️ |
|
[ remote repository (GitHub) 🌐 ] |
working directory
(作業ディレクトリ) ✍️
- すべての変更は最初に作業ディレクトリーで行われます
git add
📩
- 作業ディレクトリからステージングエリアへ追加するコマンド
staging area
(ステージングステージング) 📂
- 作業ディレクトリとリポジトリの間のバッファ用スペース
- 以前は「インデックス」と呼ばれていました
- ある特定の変更のみを追加し, まとめてリポジトリに追加する準備を行うことができます
待って, ステージングエリア? 🤔
- ファイルをステージングする = コミットのためのファイルを準備する
あなたが音楽を作っていると想像してください 🎶
- あなたは様々なメッセージを含められた曲を書いています
- 怒りの歌から愛の歌まですべて
- すべての音楽をランダムにアップロ?
- いいえ, テーマを付けたアルバムを作りますよね
ロマンチックなアルバムを作成するには 🎶
- ラブソングだけを
git add
します - すべてのラブソングを追加するまでの間決められたラブソングは
Staging Area
で保存されています. - アルバム内の必要なすべての曲を
Staging Area
に保存したら, コミットする時間です git commit -m
する時, “Love Song” ってアルバムのタイトルをコメント追加してコミットします
git commit
, repository, git push
[ working directory ✍️ ] | |
↘️ git add 📥 ↘️ |
|
[ staging area 📂 ] | |
➡️ | ↘️ git commit 💾 ↘️ |
➡️ | [ repository 🗄️ ] |
↘️ git push 🔄 ↘️ |
|
[ remote repository (GitHub) 🌐 ] |
git commit
💾
- リポジトリへ変更を記録するコマンド
- 変更を保存したいファイルがステージングエリアに配置されたら,
git commit
コマンドを使用します - ボスを倒してゲームの進行状況を保存したいときに使用するイメージです
- コミットごとにどんな変更を記録するのかを把握するためのコメントを残します
repository
🗄️
- Git リポジトリは, プロジェクト内の
.git
フォルダで管理されています - リポジトリは, プロジェクトの変更を追跡できます。
Git フォルダーの中身は何ですか? 🤔
⚡ Windows の場合, ls
の代わりに dir
コマンドを使用します
$ pwd
/Users/UserName/Documents/learning_git
$ ls -la
total 8
drwxr-xr-x 4 UserName staff 128 Jun 9 14:54 .
drwx------@ 20 UserName staff 640 Jun 8 16:22 ..
drwxr-xr-x 12 UserName staff 384 Jun 9 14:56 .git
-rw-r--r-- 1 UserName staff 85 Jun 9 14:54 README.md
$ cd .git
$ ls -la
total 40
drwxr-xr-x 12 UserName staff 384 Jun 9 14:56 .
drwxr-xr-x 4 UserName staff 128 Jun 9 14:54 ..
-rw-r--r-- 1 UserName staff 20 Jun 9 14:54 COMMIT_EDITMSG
-rw-r--r-- 1 UserName staff 23 Jun 9 14:54 HEAD
-rw-r--r-- 1 UserName staff 316 Jun 9 14:56 config
-rw-r--r-- 1 UserName staff 73 Jun 9 14:54 description
drwxr-xr-x 14 UserName staff 448 Jun 9 14:54 hooks
-rw-r--r-- 1 UserName staff 137 Jun 9 14:54 index
drwxr-xr-x 3 UserName staff 96 Jun 9 14:54 info
drwxr-xr-x 4 UserName staff 128 Jun 9 14:54 logs
drwxr-xr-x 7 UserName staff 224 Jun 9 14:54 objects
drwxr-xr-x 5 UserName staff 160 Jun 9 14:56 refs
git push
, remote repository
[ working directory ✍️ ] | |
↘️ git add 📥 ↘️ |
|
[ staging area 📂 ] | |
↘️ git commit 💾 ↘️ |
|
[ repository 🗄️ ] | |
➡️ | ↘️ git push 🔄 ↘️ |
➡️ | [ remote repository (GitHub) 🌐 ] |
git push <remote> <branch>
🔄
- Local Repo –> Remote Repo
- ローカルリポジトリをリモートリポジトリにアップロードするコマンドです
- コミットをエクスポートします
remote repository
(GitHub) 🌐
- GitHub のサーバー上のリポジトリであり, コードを他のユーザーが確認できるようにします
リモートリポジトリの操作
git remote add origin <link>
- ローカルマシンにリモートリポジトリのクローンを作成すると, Git によって
alias
が作成されます。 origin
はリモートリポジトリのURLのニックネームのようなものです- 最も一般的な
alias
は 「origin
」 と呼ばれます。 -
次のコマンドはどちらも同じ内容を実行します
$ git push -u https://github.com/ahandsel/demo.git main
$ git remote add ALIAS https://github.com/ahandsel/demo.git $ git push -u ALIAS main
git remote
- ローカルとリモートのリポジトリ間の接続を管理します
git remote --verbose
-
Gitが保存しているURLと, そのリモートリポジトリへの読み書き時に使用できるエイリアス (ニックネーム)を一覧表示します。
git remote --verbose
origin https://github.com/ahandsel/learning_git.git (fetch) origin https://github.com/ahandsel/learning_git.git (push)
Documentation
git push?
git push <remote> <branch>
🔄
-
Local Repo –> Remote Repo コミットをエクスポートします git fetch
の対応- ローカルリポジトリへのインポートコミット
- ⚠️ 注: プッシュすると, 変更が上書きされる可能性があります。
git push
コマンドは, 最後のプッシュまたはクローン以降に変更されていないリモートリポジトリに対してのみ機能します
- つまり, リモートリポジトリを変更した人は他にいません
- あなたと別のクローンが同時にあなたの前に上流にプッシュした場合, そのプッシュは正しく拒否されます。
- 最初に彼らの仕事をフェッチしてプッシュに含める必要があります
ゲームの例-どうぶつの森
- Genji は島にテントを追加しました。
- Genji がゲームステータスを GitHub にアップロードしました。
- Piyoも島に家を追加しました。
- しかし, GitHub にアップロードする前に…
- GitHub から最新のゲームステータスを取得する必要があります
- ( Genji がテントを追加したため)
Documentation
ハンズオン A レビュー
Git での保存
音楽 🎶 | |
---|---|
[ working directory ✍️ ] | 個別の曲 |
↘️ git add 📥 ↘️ |
|
[ staging area 📂 ] | アルバム |
↘️ git commit 💾 ↘️ |
|
[ repository 🗄️ ] | プレイリスト |
↘️ git push 🔄 ↘️ |
|
[ remote repository (GitHub) 🌐 ] | Spotify |
git remote
ローカルとリモートのリポジトリ間の接続を管理するコマンド
git push
ローカルリポジトリをリモートリポジトリにアップロードするコマンド
クイズの時間
- Git と GitHub はどのように関係?
- ヒント:
hub
とは, 活動またはネットワークの中心点です。
- ヒント:
git add
とgit commit
のどちらを初め?- ヒント:
commit
とは, 特定の行動 (結婚など) を約束することです。
- ヒント:
git push
コマンドは?- ヒント:
git push
コマンドはgit fetch
コマンドの逆の行動を行います。
- ヒント:
回答
1. Git と GitHub はどのように関係? * GitHub は, みんなの Git を集めた __hub__ / コレクション の中心です. * GitHub は人気のある __remote repo__ オプションです 1. `git add` と `git commit` のどちらを初め? * まず, `git add` を使用して, 個々の変更を集めます * そして, `git commit` を使用して, 変更を包みます 1. `git push` コマンドは? * __commit__ をリモートリポジトリにアップロードするねは, `git push` を使用します * リポジトリの最新バージョンを取得するねは, `git fetch` を使用します次のセクション
ブランチの作成とマージ - 02_Branches.md へ 💪
講義ガイド一覧
README.md ⚙️