この記事は,情報セキュリティ・スキルアッププロジェクト introフェーズ向けのハンズオンとして作成されました.
ハンズオン
0. 準備
0.1 gitがインストールされているか再度確認.
$ git --version
[ex]>> git version 2.32.1
バージョンが表示されればひとまずOK.
0.2 設定の確認
$ git config --list
user.name、 user.emailが設定してあればokです。設定がされていた人は、0.4に進んでください。
なにか表示されるので,ひとまずqを押して戻る.
0.3 設定
ユーザー名とメールアドレスを登録する.
$ git config --global user.name "{ユーザー名}"
$ git config --global user.email "{メールアドレス}"
{ユーザー名},{メールアドレス}には,それぞれ自分のユーザー名とメールアドレスを入力します.
{}は不要ですが,""(ダブルクオーテーション)で囲む必要があります.
もう一度設定を確認.
$ git config --list
user.name='hoge'
user.email='hoge@example.com'
と表示されればOK.qを押して抜け出す.
設定した情報は,~/.gitconfigに格納されています.
確認してみましょう.(hint: catコマンドを使う)
こたえ
$ cat ~/.gitconfig
0.4 Githubにアクセスする準備をしよう
gitではネットワークのプロトコルとしてHTTPSとSSH(Secure Shell)を利用することができます.1
このセクションでは,
①SSHキーを作って> ②公開するところまでを行います.
0.4.1 SSH鍵を作成する.
まずは①SSH鍵を作るところです.
鍵について
ここで作成するのは「公開鍵」と「秘密鍵」です.
ざっくりいうと,「公開鍵」 は 施錠用の鍵, 「秘密鍵」は 解錠用の鍵です.公開鍵をGithubに登録します.秘密鍵は,
絶対に公開しないでください.
鍵が作成されているか確認.すでに鍵が存在していた場合は,0.4.2に進んでください.
$ ls ~/.ssh
例えば, id_rsa, id_rsa.pubがあればOKです.
ない場合は,以下の手順を進めてください.
$ ssh-keygen
このあと諸々の質問をされますが,今回はEnterキーを押して続けます.
(パスフレーズを求められますが,入力しなくても問題ありません.ここはおまかせします.)
全て済むと,鍵が生成されます.
もう一度
$ ls ~/.ssh
を実行して,id_rsa, id_rsa.pubができているか確認します.
続いて,公開鍵をコピーします.
$ cat ~/.ssh/id_rsa.pub
で公開鍵を表示させ,出力された内容すべてをコピーします
0.4.2 SSH鍵をGitHubに登録
続いて②の公開するところです.
githubを開きます.



これで準備はだいたいOK.あとは必要に応じてカスタマイズしていこう.
1. 基本操作 ローカル
1.1 git操作 基本の流れ
作業用のディレクトリを作っておくといい
$ mkdir ~/hoge/git_practice/
*ファイル名は任意.
また,ファイルを残したくないときは,
/tmp/で作業をするよい.再起動すると消える.
1.1.1 リポジトリを作成する.
$ git init
を実行すると,.gitディレクトリが作られる.隠しファイルなので,$ ls -aで確認してみよう.
次に
$ git status
を実行.これで現在のリポジトリの状態を確認できる.
例
On branch main
No commits yet
nothing to commit (create/copy files and use "git add" to track)
ここで適当なファイルを作成
例
x = input("x: ")
y = input("y: ")
print(x+y)
もう一度
$ git status
を実行してみよう.(表示が変わる)
実行結果 例
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
foo.py
nothing added to commit but untracked files presentnt (use "git add" to track)
1.1.2 ステージングする
$ git add foo.py
// ディレクトリまるごと
// $ git add .
もう一度
$ git status
を実行してみよう.(また表示が変わる)
実行結果 例
On branch main
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: foo.py
1.1.3 コミットする.
$ git commmit -m "{コミットメッセージ}"
-mオプション ではコミットメッセージを指定する.これをつけないと,エディタが立ち上がり,コミットメッセージを求められる.
コミットメッセージについて
コミットメッセージは,「自分が何を意図してファイルを編集したか」を残すことができる.後で見返したときに,役立つので積極的に活用しよう.
1週間前の自分は他人.1週間後の自分も他人.
1.2 ファイルの変更の記録
ここで作成したプログラムを実行してみましょう.
>> python foo.py
x: 10
y: 20
1020
標準入力受け取った入力を,str型のまま変数に格納していたため,文字列の連結してしまっています.
ここで,foo.pyを編集します.
+ 1| x = int(input("x: "))
+ 2| y = int(input("y: "))
3| print(x+y)
$ git status
を実行してみよう.
実行結果 例
On branch main
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: foo.py
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: foo.py
1.2.1 差分の表示
変更した部分を表示する.
$ git diff
ステージングすると,git diffすると差分表示はされなくなる.
ステージング & コミットまで
$ git add foo.py
$ git commit -m "標準入力からの受け取りを`int`型に変換して,足し算できるようにする.1."
1.2.2 変更履歴の確認
変更してきた履歴は,
$ git log
コマンドで確認できる.
1.3 変更の取り消し
[参考]こちらにきれいにまとまっているので,詳しくはこちらを見てください.
1.3.1 ステージング前の変更を取り消す
$ git checkout {ファイル名など}
$ git checkout foo.py
1.3.2 ステージ済/未コミットの変更を取り消す
$ git checkout HEAD {ファイル名など}
1.3.3 コミット済の変更を取り消す
$ git revert HEAD
1.4 ブランチを使う
1.4.1 ブランチの基本操作
$ git branch
// git brahch {ブランチ名}
$ git branch b1
$ git switch b1
作成&移動を一括で
```ブランチ作成&移動 $ git switch -c b1 ```1.4.2 ブランチ上での開発
-
b1ブランチ上でファイルを変更する。例
foo.py+ 3 | print("x + y = " = str(x+y)) -
変更出来たら、
b1ブランチ上でコミットする. -
mainブランチへ戻る`main`ブランチに戻る.
``` $ git switch main ``` -
編集したファイルを確認する.
ファイルが変更されていない!! -
編集を
merge(マージ)する
$ git merge b1
実行結果
``` Updating fbe916b..bf01857 Fast-forward foo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ```2 基本操作 リモートリポジトリ(編集中)
2.1 既存のリモートリポジトリをcloneして使う
- リポジトリの作成


echo "# git-tutorial" >> README.md git init git add README.md git commit -m "first commit" git branch -M main git remote add origin git@github.com:ikedaryo8/git-tutorial.git git push -u origin main - リポジトリの紐付け
リモートリポジトリのコピーを作成
$ git clone {コピーしたURL}既存のディレクトリにに結びつける場合$ git remote add origin git@github.com:ikedaryo8/git-tutorial.git - 編集等...
- リモートリポジトリにプッシュする
$ git push -u origin main
用語辞典
| 言葉 | 説明 | |
|---|---|---|
| リポジトリ | (gitの管理下にある)ファイルやディレクトリを溜めて置く場所. | |
| ディレクトリ | フォルダに同義 | |
| ファイル |
txtなどのデータのまとまり |
|
| クローン | git clone {リポジトリのアドレス} |
リポジトリのコピーを作成 |
| フォーク | GitHubの独自機能.GitHub上でのクローン | |
| ステージング | git add {ファイル名} |
|
-
井上 顧基, (2022)「Git入門コマンドライン演習80」,p58. ↩

