計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019hw3-git.pdf · 2...

79
計算機科学実験及演習 3 ハードウェア Git の使い方」 京都大学情報学科計算機科学コース

Upload: others

Post on 30-Aug-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

計算機科学実験及演習3ハードウェア「Gitの使い方」

京都大学情報学科計算機科学コース

Page 2: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

2

課題提出等に用いるGit・GitLabの使い方を学ぶ

① Gitの概要バージョン管理システムとGitの基本概念を紹介

② Gitの使い方Gitの基本的なコマンドの説明

③ GitLabの設定本実験で使用するリモートリポジトリGitLabの設定

④ 実験3HWでのGitLabの使い方本実験でのGitLabの運用方針を説明

概要

Page 3: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

②Gitの概要

Page 4: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

4

PCでの作業で起こりうること

● エラーを含んだ状態でプログラムを保存してしまった。- 動作していたときの状態に戻したい。

● レポートのファイルを間違って削除してしまった。- 元に戻したい。

● 1週間ぶりに開くファイル、以前どんな編集をしたのか忘れてしまった。

- 何をしたのか記録しておきたい。● 二人で1つのファイルを編集してしまい、一方の人がした編集が反映されなかった。

Gitの概要

Page 5: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

5

バージョン管理システム

● ファイルの変更履歴を記録し共同編集を支援する- こんなことができるo ファイルを過去の状態に戻す

o 編集内容のメモ

o 他人が編集したファイルを上書きしようとすると警告を出す

Gitの概要

Page 6: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

6

Gitはバージョン管理システムの1つ

● 分散型のバージョン管理システム。● Linuxのソースコードを管理するためにLinus Torvalds自身が開発。

● 実験3HWではGitでバージョン管理を行う(必須)

● レポートの提出もGitを使う(後で説明)

Gitの概要

Page 7: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

7

Gitによるバーション管理の方法

● Gitはディレクトリ単位で管理を行う。

● Gitで管理されるディレクトリには3つのエリアが作られる。

● ワーキングディレクトリ、ステージングエリア、リポジトリ

Gitの概要

ワーキングディレクトリ

ステージングエリア

リポジトリ

Directory

Page 8: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

8

ワーキングディレクトリ

● Gitで管理しているディレクトリそのもの。

● ドキュメントやプログラムファイルの作成などの作業を行う場所。

Gitの概要

ワーキングディレクトリ

ステージングエリア

リポジトリ

ファイルA

ファイルB

Directory

Page 9: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

Directory

9

ステージングエリア

● 変更履歴として保存するファイルを選択し、置いておく場所。

● ワーキングディレクトリのファイルの中から意味のあるひとまとまりのファイルを選びステージングする。

Gitの概要

ワーキングディレクトリ

ステージングエリア

リポジトリ

ファイルA

ファイルB

ファイルA

Page 10: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

Directory

10

リポジトリ

● 変更履歴を記録しておく場所● ステージングエリアに置かれているファイルを、変更履歴として保存する。リポジトリに変更履歴を保存することを

“コミット”という。

Gitの概要

ワーキングディレクトリ

ステージングエリア

リポジトリ

ファイルA

ファイルB

ファイルA

コミット1

コミット

ファイルAの21⾏⽬を変更

Page 11: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

11

コミット

● コミットをする度にリポジトリに変更履歴が記録されていく。

● いつでも、任意のコミットに戻ることができる。

Gitの概要

コミット1 コミット2 コミット3 コミット4

ファイルAの21⾏⽬を変更

ファイルBの30⾏⽬を変更

ファイルCを追加

ファイルAの46⾏⽬を変更

Page 12: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

12

ブランチ

● 変更履歴の流れを分岐することで並行での編集を支援● あるブランチへの変更は、他のブランチに影響しない● ブランチ同士の統合(マージ)も可能

Gitの概要

分岐 統合

追加機能開発ブランチ

メインブランチ

Page 13: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

13

Gitの概要

リモートリポジトリ

● サーバー上に存在し、複数の人が参照することのできるリポジトリをリモートリポジトリという。

リモートリポジトリ

ローカルリポジトリ

ローカルリポジトリ

ローカルリポジトリ

Page 14: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

14

Gitの概要

プッシュとフェッチ

● ローカルリポジトリの内容をリモートリポジトリにアップロードすることをプッシュという。

● リモートリポジトリの内容をローカルリポジトリにダウンロードしてくることをフェッチという。

リモートリポジトリローカルリポジトリ

プッシュ

フェッチ

Page 15: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

③Gitの使い方

Page 16: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

16

Gitの初期設定

コマンドラインの設定

$ git config --global user.name “KATO KAZUNARI"$ git config --global user.email "[email protected]"

Gitの使い方

• Gitの操作はターミナル上で行う。

• git config --globalコマンドによりユーザー名とメールアドレスを登録する。

Page 17: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

17

Gitリポジトリを初期化する

Gitの使い方

git init

現在のディレクトリをGitリポジトリとして初期化する。

Page 18: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

18

Gitリポジトリを初期化する

Gitの使い方

gittest

ワーキングディレクトリ

ステージングエリア

リポジトリ

• gittestディレクトリがGitリポジトリとして認識される。• ディレクトリには.gitディレクトリが作成されている。

$ mkdir gittest$ cd gittest$ git initInitialized empty Git repository in <ディレクトリ> /gittest/.git

Page 19: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

19

ディレクトリ内にテキストファイルを作成する。

Gitの使い方

gittestワーキング

ディレクトリステージング

エリアリポジトリ

dog.txt

ワーキングディレクトリにdog.txtが追加される。

$ echo “bow wow” >> dog.txt

Page 20: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

20

現在のディレクトリ内の状態を確認する

Gitの使い方

$ git status

ディレクトリ内の状態を確認する。

git status

Page 21: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

21

現在のディレクトリ内の状態を確認する

Gitの使い方

$ git statusOn branch master

Initial commit

Untracked files:(Use “git add<file>…” to include what will commited)

dog.txt

nothing added to commit but untracked files present(use “git add” to track

• 新しく作成したファイル(dog.txt)がUntracked files:の⼀覧に表⽰される。• Untracked filesには⼀度もステージングしたことがないファイルが表⽰される

Page 22: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

22

指定したファイルをステージングエリアへ追加する

Gitの使い方

<ファイル名>をステージングエリアに追加する。

$ git statusgit add <ファイル名>

Page 23: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

23

指定したファイルをステージングエリアへ追加する

Gitの使い方

gittestワーキング

ディレクトリステージング

エリアリポジトリ

dog.txt dog.txt

$ git add dog.txt

• dog.txtがステージングエリアに追加される。

Page 24: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

24

ステージングエリア追加後の状態を確認する

Gitの使い方

$ git status…Changes to be commited:(Use “git rm –cached <file>…” to unstage)

new file: dog.txt

• ステージング後に、再びgit statuコマンドにより状態を確認する。• Changes to be commited:の⼀覧にdog.txtがnew fileとして表⽰されている。ス

テージングエリアに新たに加えられたことを⽰している。

Page 25: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

25

ステージングされたファイルをコミットする。

Gitの使い方

ステージングされているファイルをコミットする。-mオプションをつけると1⾏のコミットコメントをつけることができる。

$ git statusgit commit -m <コメント>

Page 26: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

26

ステージングされたファイルをコミットする。

Gitの使い方

gittestワーキング

ディレクトリステージング

エリアリポジトリ

dog.txt dog.txt 2c2adf7

create dog

$ git commit –m “create dog”[master (root-commit) 2c2adf7] create dog1 file changed, 1 insertion(+)

• create dogというコメントをつけてコミットする。• ステージングされていたdog.txtがコミットされる。

Page 27: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

27

Gitの使い方

gittest

ワーキングディレクトリ

ステージングエリア

リポジトリ

dog.txt

2c2adf7..

cat.txt

dog.txtの変更と、新規ファイルの追加。

create dog

$ echo “mew” >> cat.txt$ echo “wan wan” >> dog.txt

• dog.txtを編集し、新たにcat.txtを追加する。

Page 28: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

28

Gitの使い方

dog.txtの変更と、新規ファイルの追加。

$ git statusOn branch masterChanges not staged for commit:…

modified: dog.txtUntracked files:…

cat.txt

• Changes not staged for commitには過去にステージングしたことがあり、かつ最新のコミットから変更されているファイルが表⽰される。

• Untracked filesにはcat.txtが表⽰される。

Page 29: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

29

Gitの使い方

gittest

ワーキングディレクトリ

ステージングエリア

リポジトリ

dog.txt

2c2adf7..

cat.txt

変更

新規

dog.txtの変更と、新規ファイルの追加。

create dog

Page 30: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

30

Gitの使い方

gittestワーキング

ディレクトリステージング

エリアリポジトリ

dog.txt

550dfb..

cat.txt

• dog.txtの変更とcat.txtの追加が⼀つの変更としてコミットされる。• git addのファイル指定ではワイルドカードが使える。• また “.”を指定すると変更があった全てのファイルをステージングする。

変更

新規

dog.txtA3cb0...

Commit all files

全ての変更をコミット。

cat.txt

$ git add *.txt$ git commit –m “commit all files”

Page 31: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

31

Gitの使い方

コミットの履歴を確認する。

コミットの履歴を確認する

$ git status git log

Page 32: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

32

Gitの使い方

$ git logcommit 550dfb1f4de340c3abe04549f52c4a6598ad4cbfAuthor: Kazunari Kato<[email protected]>Date: Fri Apr 27 14:01:23 2018 +0900

commit all files

commit 2c2adf7291e16fd4301a625c8ac5589edc703f83Author: Kazunari Kato<[email protected]>Date: Fri Apr 27 13:58:26 2018 +0900

create dog.txt

• コミット履歴が新しいものから順番に表⽰される。• 1⾏⽬の⽂字列はコミットIDといって、コミットを識別するためのもの。

コミットの履歴を確認する

Page 33: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

33

Gitの使い方

コミットの履歴を確認する

2c2adf.. 550dfb..

Create dog.txt commit all files

Page 34: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

34

以前のコミットの状態に戻す

Gitの使い方

ファイルを<commit id>で指定したコミットの状態に戻す。

$ git statusgit reset --hard <commit id>

Page 35: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

35

Gitの使い方

$ echo “tweet” >> bird.txt$ echo “meow meow” >> cat.txt$ git status// bird.txtの追加とcat.txtが変更されているメッセージが出る。$ git reset --hard //コミットIDを省略すると最新のコミットに戻る$ git status// 変更が何もないというメッセージがでる。

• 新たにbird.txtを追加し、cat.txtを変更する。• git reset --hardコマンドで、ファイルを最新のコミットの状態に戻す。• lessコマンドなどで、ファイルを確認すると、元に戻っている。

以前のコミットの状態に戻す

Page 36: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

36

ブランチ一覧を表示する。

Gitの使い方

作成されているブランチの⼀覧を表⽰する。

$ git statusgit branch

Page 37: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

37

ブランチを利用する-ブランチ一覧を表示する。

Gitの使い方

$ git branch* master

masterブランチ

2c2adf.. 550dfb..

• 作成済みのブランチが表⽰される。(masterブランチは最初から存在している。)

• *は現在選択(チェックアウト)されているブランチを⽰している。

Page 38: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

38

新しくブランチを作成する

Gitの使い方

新しくブランチを作成する。

git branch <ブランチ名>

Page 39: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

39

新しくブランチを作成する

Gitの使い方

$ git branch mod-cat$ git branch* mastermod-cat

• mod-catというブランチを作成する。• git branch で確認するとmod-catブランチが作成されているのがわかる。

masterブランチ

2c2adf.. 550dfb..

mod-catブランチ

Page 40: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

40

ブランチを選択する

Gitの使い方

<ブランチ名>で指定したブランチを選択する。

git checkout <ブランチ名>

Page 41: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

41

ブランチを選択する

Gitの使い方

$ git checkout mod-catSwitched to branch ‘mod-cat’$ git branchmaster

* mod-cat

mod-catブランチを選択して、git branchコマンドでmod-catが選択されていることを確認する。

masterブランチ

2c2adf.. 550dfb..

mod-catブランチ

Page 42: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

42

mod-catブランチでコミットする

Gitの使い方

$ echo “nya-” >> cat.txt$ git add cat.txt$ git commit –m “mod cat”$ git log --online* 3b503ba mod cat* 55d0fb1f commit all files* 2c2adf72 create dog

• cat.txtを変更して、コミットする。• git log コマンドに--onelineオプションをつけると履歴を省略形で表⽰

する。• 3つのコミットがあることを確認できる。

Page 43: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

43

mod-catブランチでコミットする

Gitの使い方

• 作成されたコミットはmod-catブランチで更新される。• masterブランチは変わらずに550dfb..のコミットを保持している。

masterブランチ

2c2adf.. 550dfb..mod-catブランチ

3b503..

Page 44: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

44

masterブランチを更新する

Gitの使い方

$ git checkout master$ echo “waon” >> dog.txt$ git add dog.txt$ git commit –m “mod dog”$ git log* e6fa391 mod dog* 55d0fb1 commit all files* 2c2adf7 create dog

• masterブランチを選択してdog.txtを変更しコミットする。• コミット履歴を確認するとmod-catブランチでのコミットは含まれてお

らず、masterブランチで⾏なったコミットのみが表⽰される。

Page 45: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

45

masterブランチでコミットを行う

Gitの使い方

masterブランチ

2c2adf.. 550dfb..mod-catブランチ

3b503..

ab502c..

• 新しく作成されたコミットはmasterブランチで更新される。• mod-catブランチで⾏われた変更はmasterブランチには影響されない。

Page 46: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

46

ブランチを統合(マージ)する

Gitの使い方

現在選択されているブランチに<ブランチ名>で指定したブランチを統合(マージ)する。

git merge <ブランチ名>

Page 47: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

47

masterブランチにmod-catブランチを統合する

Gitの使い方

$ git checkout master$ git merge mod-cat

• masterブランチにチェックアウトして、mod-catブランチをマージする。

masterブランチ

2c2adf.. 550dfb..

mod-catブランチ3b503..

ab502c..

Page 48: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

48

masterブランチにmod-catブランチを統合する

Gitの使い方

Merge branch ‘mod-cat’

#........//省略

• マージコミットを⾏うためのエディタが⽴ち上がるので、必要に応じてコメントを修正し、保存・終了(:wqをタイプ)する。

Page 49: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

49

masterブランチにmod-catブランチを統合する

Gitの使い方

$ git log --oneline --graph//省略

• git logコマンドに--graphオプションをつけると、履歴の分岐をグラフィカルに表⽰する。

masterブランチ

2c2adf.. 550dfb..

3b503..

ab502c.. bd9c80..

Page 50: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

50

ブランチを破棄する

チュートリアル2

git branchに-dオプションをつけると<ブランチ名>で指定したブランチを破棄する。

git branch -d <ブランチ名>

Page 51: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

51

ブランチを破棄する

Gitの使い方

$ git branch –d mod-catDelete branch mod-cat (was 23e1793)

• 不必要となったブランチは消去する。

Page 52: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

52

ローカルリポジトリの内容をリモートリポジトリにプッシュする

Gitの使い方

git push <エイリアス> <ブランチ>

git remote add <エイリアス> <URL>

<URL>を<エイリアス>という名前でリモートリポジトリとして登録する。

<エイリアス>のリモートリポジトリにローカルの<ブランチ>をプッシュする。

Page 53: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

53

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

Gitの使い方

$ git remote add origin http://ユーザ名@130.54.13.121:7000/ユーザ名/プロジェクト名.git$ git push -u origin master

● リモートリポジトリとしてURLをoriginというエイリアス名で設定する。

● originのリモートリポジトリにmasterブランチをプッシュする。

リモートリポジトリ

ローカルリポジトリ

プッシュ

ddc34...

Create cat.txt

ddc34...

Create cat.txt

Page 54: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

54

リモートリポジトリの内容をローカルリポジトリにコピーする。

Gitの使い方

git clone <URL><URL>のリモートリポジトリの内容をローカルにコ

ピーする。

Page 55: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

55

リモートリポジトリをクローン

Gitの使い方

$ git clone http://ユーザ名@130.54.13.121:7000/ユーザ名/プロジェクト名.git

● リモートリポジトリの完全なコピーを作成する。

● ローカルリポジトリにプロジェクトがないときに使用。

リモートリポジトリ

ローカルリポジトリ

クローン

ddc34...

Create cat.txtddc34...

Create cat.txt

Page 56: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

56

リモートリポジトリの内容でローカルリポジトリを更新する。

Gitの使い方

git pull <エイリアス> <ブランチ><エイリアス>のリモートリポジトリの内容でローカル

の<ブランチ>を更新する。

Page 57: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

57

ローカルリポジトリを更新

GitLab

$ git clone http://ユーザ名@130.54.13.121:7000/ユーザ名/プロジェクト名.git

● リモートリポジトリの開発がローカルリポジトリよりも進んでいるとき、リモートリポジトリの内容でローカルリポジトリを更新する。

リモートリポジトリ

ローカルリポジトリ

pull

ddc34...

Create cat.txt

550dfb...ddc34...

Create cat.txt

Page 58: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

②GitLabの設定

Page 59: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

59

GitLabの設定

※学外からはアクセスできません

GitLabのアドレス● 本演習ではリモートリポジトリとしてGitLabを使用する

http://130.54.13.121:7000

Page 60: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

60

GitLabへのログイン

● Username: 学生番号、Password: 学生番号でログイン

GitLabの設定

Page 61: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

61

アカウント設定

● パスワードの設定画面が出るので、パスワードを変更する。

GitLabの設定

Page 62: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

62

アカウント設定の修正

● 変更したパスワードでもう一度ログインする。

● “ Profile”タブからメールアドレスを変更

● ページの一番下にある “Update profile settings”をクリック。

● 設定したアドレスに届くメールで承認すると変更完了。

GitLabの設定

Page 63: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

63

リモートリポジトリの作成

● ページ右上のメニューから “New project” (+のアイコン)をクリック。

GitLabの設定

Page 64: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

64

リモートリポジトリの作成

● “Project name”に任意のリポジトリ名を記入。

● “Vevisility Level”をPrivateに設定。

● “Create Project”をクリック。

GitLabの設定

Page 65: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

65

リモートリポジトリの作成

● 作成したリモートリポジトリのURLが表示される。

● このURLを使ってローカルリポジトリをプッシュする。

GitLabの設定

Page 66: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

66

リモートリポジトリの作成

● このURLを使ってローカルリポジトリをプッシュ、クローンなどを行う。

GitLabの設定

リモートリポジトリ

Aさんリポジトリ

ddc34...

Create cat.txt

ddc34...

Create cat.txt

Page 67: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

67

リモートリポジトリの確認

● Repository→Commitsをクリックするとリモートリポジトリ上でコミットの履歴が確認できる。

GitLabの設定

Page 68: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

④本実験でのGitLab運用方法

Page 69: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

69

実験におけるGitLabの運用方法● グループでの成果物の管理

- グループリポジトリを使用

● 課題の提出、質問

- 課題の提出は成果物・レポートともにGitLab上から行う。

- 課題提出(中間報告・最終報告)や質問時には

どのバージョンなのか明らかにするためにコミットにタグをつける。

本実験でのGitLabの運用方法

Page 70: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

70

グループの確認

● 画面左上のメニューから“Groups”を選択

● 所属グループ“le3hw2019g◯◯”が表示される

● グループ名をクリックした後、 “Members”タブを選択

● 実験グループのメンバーとTA用アカウント (le3hw2019)がメンバーとして登録されていることを確認

本実験でのGitLabの運用方法

Page 71: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

71

グループの共有プロジェクトを作成する

● “Group”タブを選択、 “New Project”をクリック

本実験でのGitLabの運用方法

*グループの内どちらか1名が作成すれば良い。

Page 72: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

72

グループの共有プロジェクトを作成する

● “Project name”を入力(課題で指示される)

● Visibility LevelがPrivateになっていることを確認

● “Create project”をクリック

本実験でのGitLabの運用方法

Page 73: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

73

グループリポジトリにプッシュ、プル、クローン

本実験でのGitLabの運用方法

● 使用方法は個人のリポジトリと同様。

リモートリポジトリ

Aさんリポジトリ

ddc34...

Create cat.txt

ddc34...

Create cat.txt

Bさんリポジトリ

ddc34...

Create cat.txt

Page 74: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

74

コミットにタグをつける

本実験でのGitLabの運用方法

最新のコミットに対して、タグをつける。-a の後にタグ、-m の後にコメントを記載

git tag -a <タグ> -m <コメント>

git push <エイリアス> --tag

git pushに--tagオプションをつけるとタグの情報をリモートリポジトリにプッシュする。

Page 75: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

75

コミットにタグをつける

本実験でのGitLabの運用方法

git tag –a v1.0 –m ‘my version 1.0’git push origin --tag

2c2adf.. 550dfb..

3b503..

ab502c.. bd9c80..

V1.0

Page 76: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

76

コミットにタグをつける

● Tagタブを開いて結果を確認。

- 課題提出、質問をするときは該当のコミットにつけたタグをメールに明記する。

本実験でのGitLabの運用方法

Page 77: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

77

コンフリクト

● コンフリクトを未然に防ぐ- .gitignoreを設定して、ログファイルなど不要なファイルはGitの管理対象外にする。(https://github.com/github/gitignore)

- GitLabのマージリクエストを使用する。(https://docs.gitlab.com/ee/gitlab-basics/add-merge-request.html)

- 二人で1つのファイルを同時に編集しないようにする。

よくある問題と対策

Page 78: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

78

コンフリクト

● コンフリクトした時の対処法- git statusコマンドでコンフリクトしているファイルを確認。

- 直接ファイルを開く。編集が重複している部分が“<<<<HEAD”、 “=======”、 “>>>>”でハイライトされているので、不要部分を削除する。

- 編集したファイルをステージング、コミットする。

よくある問題と対策

Page 79: 計算機科学実験及演習3 - lab3.kuis.kyoto-u.ac.jptakase/le3a/2019HW3-git.pdf · 2 課題提出等に用いるGit・GitLabの使い方を学ぶ ①Gitの概要 バージョン管理システムとGitの基本概念を紹介

79

● サルでもわかるGit入門http://www.backlog.jp/git-guide/

● Pro Git book(日本語版)https://git-scm.com/book/ja/v2

● Git Cheat Sheethttps://services.github.com/on-demand/downloads/github-git-cheat-sheet.pdf

参考情報