Top Banner
Git 勉強会 卒論はGitで管理しましょう回 kinmemodoki *卒論については104pageから 第⼆回
119

Git勉強会 2016 Gitで卒論を管理しよう回

Apr 16, 2017

Download

Education

kinme modoki
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Git勉強会 2016 Gitで卒論を管理しよう回

Git勉強会卒論はGitで管理しましょう回

@kinmemodoki

*卒論については104pageから

第⼆回

Page 2: Git勉強会 2016 Gitで卒論を管理しよう回

2参考資料(Git)

Git講習 masawada⽒http://sssslide.com/speakerdeck.com/masawada/gitjiang-xi-2014-dot-04-dot-15

Gitチュートリアルhttps://www.atlassian.com/ja/git

Page 3: Git勉強会 2016 Gitで卒論を管理しよう回

覚えていってほしいもの

1. gitの準備 init

2. コミット add & commit

3. 巻き戻し操作 rebase

4. ブランチ操作 brunch& marge

5. リモートリポジトリ操作 clone & pull& push

3はじめに

Page 4: Git勉強会 2016 Gitで卒論を管理しよう回

Whatisgit?

“Git” ってなんですか

Gitは、プログラムのソースコードなどの

変更履歴を記録・追跡するための

分散型バージョン管理システムである。

4Wikipedia[git]:http://ja.wikipedia.org/wiki/Git

Wikipediaより

Page 5: Git勉強会 2016 Gitで卒論を管理しよう回

Whatisgit?

プログラムの基礎っぽいところができたとき

5

次はチャット機能を追加しようかな

でもヘタに変えたら動かなくなるかも…

Page 6: Git勉強会 2016 Gitで卒論を管理しよう回

Whatisgit?

プログラムの基礎っぽいところができたとき

6

新しいディレクトリにコピーして編集しよう!!

Page 7: Git勉強会 2016 Gitで卒論を管理しよう回

Whatisgit?7

どれが最新…?⼀個前のはどれ…?

Page 8: Git勉強会 2016 Gitで卒論を管理しよう回

Whatisgit?8

ソースを特定の時期の状態にもどしたい…

Page 9: Git勉強会 2016 Gitで卒論を管理しよう回

Whatisgit?9

チーム開発で最新ファイルの共有をしたい…

ソースコード編集して新機能追加しました

お前が編集したのは前バージョンのものだ!

Page 10: Git勉強会 2016 Gitで卒論を管理しよう回

Whatisgit?10

そんな問題を解決!

Page 11: Git勉強会 2016 Gitで卒論を管理しよう回

Whatisgit?11

• コードの状態を保存

• 更新した内容がわかる

• チームでの開発だともっと便利

Page 12: Git勉強会 2016 Gitで卒論を管理しよう回

12

0.gitの準備

Page 13: Git勉強会 2016 Gitで卒論を管理しよう回

Windows

1.http://git-scm.com/downloads からインストール

130.gitの準備

2.Git Bashを起動

Page 14: Git勉強会 2016 Gitで卒論を管理しよう回

Mac

1.http://git-scm.com/downloads からインストール

140.gitの準備

Page 15: Git勉強会 2016 Gitで卒論を管理しよう回

Mac2.pkgファイルをインストール3.shファイル(シェルスクリプト)使ってパス設定

150.gitの準備

Page 16: Git勉強会 2016 Gitで卒論を管理しよう回

確認

「git --version」を⼊⼒し

versionが表⽰されたら完了

160.gitの準備

Page 17: Git勉強会 2016 Gitで卒論を管理しよう回

17

1.プログラミングをする前

Page 18: Git勉強会 2016 Gitで卒論を管理しよう回

18

$ git init <directory>

1.プログラミングをする前

新しい作業ディレクトリ

.gitフォルダを含む新規フォルダが作成される

.git

Page 19: Git勉強会 2016 Gitで卒論を管理しよう回

19

$ git init

1.プログラミングをする前

カレントディレクトリ .git

カレントフォルダに.gitディレクトリが作成される

Page 20: Git勉強会 2016 Gitで卒論を管理しよう回

データの編集履歴の保存場所昔の状態に戻りたい時に参照

201.プログラミングをする前

.git

リポジトリ

Page 21: Git勉強会 2016 Gitで卒論を管理しよう回

データの編集履歴の保存場所昔の状態に戻りたい時に参照

211.プログラミングをする前

.git

リポジトリ

データベース的な感じ

Page 22: Git勉強会 2016 Gitで卒論を管理しよう回

git管理するファイルの例外を登録(卒論pdfや外部ライブラリなど...)

221.プログラミングをする前

.gitignore

情報漏えいや履歴データの節約になる

Page 23: Git勉強会 2016 Gitで卒論を管理しよう回

23

2.コード編集後

Page 24: Git勉強会 2016 Gitで卒論を管理しよう回

242.コード編集後

ワークツリー

編集履歴をリポジトリに保存する流れ

ワークツリーでファイルを追加/編集/削除(作業ディレクトリ)

Page 25: Git勉強会 2016 Gitで卒論を管理しよう回

252.コード編集後

ワークツリー インデックス

編集履歴をリポジトリに保存する流れ

リポジトリに登録したいファイルを追加(データベース)

Page 26: Git勉強会 2016 Gitで卒論を管理しよう回

262.コード編集後

ワークツリー リポジトリインデックス

編集履歴をリポジトリに保存する流れ

追加したファイルをリポジトリに登録

Page 27: Git勉強会 2016 Gitで卒論を管理しよう回

272.コード編集後

編集履歴をリポジトリに保存する流れ

add commit

ワークツリー リポジトリインデックス

Page 28: Git勉強会 2016 Gitで卒論を管理しよう回

28

[filename]をインデックスに登録

$ git add [filename]

2.コード編集後

ワークツリー インデックス

add

Page 29: Git勉強会 2016 Gitで卒論を管理しよう回

29

作業ディレクトリ追加/変更されたファイルをadd

$ git add .

2.コード編集後

ワークツリー インデックス

add

Page 30: Git勉強会 2016 Gitで卒論を管理しよう回

30

ワークツリーに追加/変更/削除されたファイルをadd

$ git add -A

2.コード編集後

ワークツリー インデックス

add

Page 31: Git勉強会 2016 Gitで卒論を管理しよう回

312.コード編集後

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

エリア

編集履歴をリポジトリに保存する流れ

add

編集したファイルを登録する準備ができました

Page 32: Git勉強会 2016 Gitで卒論を管理しよう回

32

$ git commit

リポジトリステージングエリア

commit

登録されたファイルをリポジトリにすべて保存

2.コード編集後

Page 33: Git勉強会 2016 Gitで卒論を管理しよう回

commit後のコメント⼊⼒(vim)

332.コード編集後

何の更新をしたかをコメント

Page 34: Git勉強会 2016 Gitで卒論を管理しよう回

34

$ git commit –m “comment”

リポジトリワークツリー

commit

コメントをしつつコミット

2.コード編集後

Page 35: Git勉強会 2016 Gitで卒論を管理しよう回

リポジトリに登録完了!(これで過去のファイルを復元できる!)

35

リポジトリ登録完了

Page 36: Git勉強会 2016 Gitで卒論を管理しよう回

36

$ git status

ファイルのadd状態を表⽰

2.コード編集後

ワークツリー インデックス

Page 37: Git勉強会 2016 Gitで卒論を管理しよう回

37

リポジトリのログを表⽰

$ git log

2.コード編集後

リポジトリlog

Page 38: Git勉強会 2016 Gitで卒論を管理しよう回

382.コード編集後

リポジトリの“詳しい”ログを表⽰

コメント

⽇付

更新者

Page 39: Git勉強会 2016 Gitで卒論を管理しよう回

39

リポジトリの “短い”ログを表⽰

$ git log --oneline

2.コード編集後

リポジトリlog

Page 40: Git勉強会 2016 Gitで卒論を管理しよう回

402.コード編集後

リポジトリの“簡易的”ログを表⽰

コメント

Page 41: Git勉強会 2016 Gitで卒論を管理しよう回

Tips

41

Page 42: Git勉強会 2016 Gitで卒論を管理しよう回

42

What isstaging?

インデックスっている?

Page 43: Git勉強会 2016 Gitで卒論を管理しよう回

4343

インデックスっている?

編集ファイル

リポジトリ

commit

What isstaging?

Page 44: Git勉強会 2016 Gitで卒論を管理しよう回

4444

チャット機能&履歴閲覧機能を実装したぞ!!

chat.js history.js

チャット機能を付けるために変更したファイル

What isstaging?

Page 45: Git勉強会 2016 Gitで卒論を管理しよう回

4545

chat.js

リポジトリ

history.js

まとめてcommit

「chat&history機能つけました」

What isstaging?

Page 46: Git勉強会 2016 Gitで卒論を管理しよう回

4646

リポジトリlog

3/14「chatとhistory機能つけた」3/12「基本機能つけた」

New

Old

What isstaging?

Page 47: Git勉強会 2016 Gitで卒論を管理しよう回

4747

その後…

history機能でバグ発⾒

「history機能を実装し直しだ…」 リセットしよう!

What isstaging?

Page 48: Git勉強会 2016 Gitで卒論を管理しよう回

4848

リポジトリlog

3/14「chatとhistory機能つけた」3/12「基本機能つけた」

イマココ

What isstaging?

Page 49: Git勉強会 2016 Gitで卒論を管理しよう回

4949

リポジトリlog

3/14「chatとhistory機能つけた」3/12「基本機能つけた」⼀個前

「chat機能も実装し直しじゃねーか…」

What isstaging?

Page 50: Git勉強会 2016 Gitで卒論を管理しよう回

5050http://protectasapporo.blog.fc2.com/blog-entry-205.html

What isstaging?

Page 51: Git勉強会 2016 Gitで卒論を管理しよう回

5151

なんてことになる前に!

http://protectasapporo.blog.fc2.com/blog-entry-205.html

What isstaging?

Page 52: Git勉強会 2016 Gitで卒論を管理しよう回

5252

chat.js リポジトリ

history.js

commit

「chat機能つけました」

リポジトリ

commit

「history機能つけました」

commitはしっかり分けましょう

※分け⽅はいろいろ

commitしたらhistoryを編集

What isstaging?

Page 53: Git勉強会 2016 Gitで卒論を管理しよう回

5353

チャット機能をcommitする前にhistory.js作っちゃったぞ!

history.jsは消さなきゃダメ…?

What isstaging?

Page 54: Git勉強会 2016 Gitで卒論を管理しよう回

5454

インデックス

What isstaging?

Page 55: Git勉強会 2016 Gitで卒論を管理しよう回

5555

commitchat.js

history.js

「chat機能つけました」

add

addしない

What isstaging?

Page 56: Git勉強会 2016 Gitで卒論を管理しよう回

5656

commitchat.js

history.js

「history機能つけました」

add

What isstaging?

Page 57: Git勉強会 2016 Gitで卒論を管理しよう回

5757

What isstaging?

インデックス

良いcommitをするための整理場所

Page 58: Git勉強会 2016 Gitで卒論を管理しよう回

5858

Tips

ワークツリー リポジトリインデックス

編集履歴をリポジトリに保存する流れ

add commit

Page 59: Git勉強会 2016 Gitで卒論を管理しよう回

gitできるようになったこと・リポジトリに登録できるようになった

59おさらい

でてきたコマンド

・git init 初期準備

・git add 登録するファイルを選ぶ・git commit リポジトリへ登録

・git status add状態を表⽰・git log commitの履歴を表⽰

Page 60: Git勉強会 2016 Gitで卒論を管理しよう回

60

3.巻き戻したいとき

Page 61: Git勉強会 2016 Gitで卒論を管理しよう回

613.巻き戻したいとき

Tips:コミットの指定⽅法

3/14「4thcommit」 ------>HEAD

3/12「3rdcommit」 ------>HEAD^

3/10「2ndcommit」 ------>HEAD^^

3/8「1st commit」 ------>HEAD^^^

New

Old

Page 62: Git勉強会 2016 Gitで卒論を管理しよう回

62

$ git reset (option) (commit ID)

3.巻き戻したいとき

↑ commitID(commitIDは HEAD^^でも指定できる)

Page 63: Git勉強会 2016 Gitで卒論を管理しよう回

633.巻き戻したいとき

git reset (option)何を戻すのかを指定可能

作業ディレクトリ インデックス リポジトリ(オプション)

--hard

(nooption)

--soft 今のまま

今のまま

今のまま

Page 64: Git勉強会 2016 Gitで卒論を管理しよう回

643.巻き戻したいとき

間違えてaddした!!

Page 65: Git勉強会 2016 Gitで卒論を管理しよう回

65

ステージングファイルを前回のコミット時に

$ git reset HEAD

3.巻き戻したいとき

ステージングファイル

Page 66: Git勉強会 2016 Gitで卒論を管理しよう回

663.巻き戻したいとき

過去に戻りたい!!

Page 67: Git勉強会 2016 Gitで卒論を管理しよう回

67

$ git reset --hard HEAD^^

3.巻き戻したいとき

1st commitHEAD^^

2ndcommitHEAD^

latestcommitHEAD

ワークツリー

Page 68: Git勉強会 2016 Gitで卒論を管理しよう回

683.巻き戻したいとき

間違えてcommitした!!

Page 69: Git勉強会 2016 Gitで卒論を管理しよう回

69

直前のコミットをキャンセルしてコミット

$ git commit --amend

3.巻き戻したいとき

新規コミット前コミット内容

Page 70: Git勉強会 2016 Gitで卒論を管理しよう回

70

前のコミットをキャンセルしてコミット

$ git commit --amend

3.巻き戻したいとき

新規コミット前コミット内容

上書き保存

Page 71: Git勉強会 2016 Gitで卒論を管理しよう回

71

4.新機能を追加したいとき

Page 72: Git勉強会 2016 Gitで卒論を管理しよう回

724.新機能を追加したいとき

ブランチbrunch枝

Page 73: Git勉強会 2016 Gitで卒論を管理しよう回

734.新機能を追加したいとき

ブランチ(branch)

複数の機能を並⾏して作成したりリリース版やhotfix版作ったりするときに利⽤

チャット機能

画像アップ機能

主機能commit

commit

Page 74: Git勉強会 2016 Gitで卒論を管理しよう回

74

$ git branch [name]

name

mastercommit デフォルトは「master」

ブランチを新規作成

4.新機能を追加したいとき

Page 75: Git勉強会 2016 Gitで卒論を管理しよう回

75

$ git checkout [name]

name

mastercommit

編集中のブランチを変更

4.新機能を追加したいとき

編集中

Page 76: Git勉強会 2016 Gitで卒論を管理しよう回

76

$ git merge [name]

name

mastercommit

ブランチを統合

4.新機能を追加したいとき

編集中

commit

Page 77: Git勉強会 2016 Gitで卒論を管理しよう回

774.新機能を追加したいとき

ブランチの流れ

作成 移⾏ 編集 保存 移⾏ 統合

mastercommit

編集中

Page 78: Git勉強会 2016 Gitで卒論を管理しよう回

784.新機能を追加したいとき

ブランチの流れ

chat

mastercommit

作成 移⾏ 編集 保存 移⾏ 統合

$git brunchchat

編集中

Page 79: Git勉強会 2016 Gitで卒論を管理しよう回

794.新機能を追加したいとき

ブランチの流れ

chat

mastercommit

作成 移⾏ 編集 保存 移⾏ 統合

$git checkoutchat

編集中

Page 80: Git勉強会 2016 Gitで卒論を管理しよう回

804.新機能を追加したいとき

ブランチの流れ

chat

mastercommit

作成 移⾏ 編集 保存 移⾏ 統合

$vimsample.javaとか

編集中

Page 81: Git勉強会 2016 Gitで卒論を管理しよう回

814.新機能を追加したいとき

ブランチの流れ

chat

mastercommit

作成 移⾏ 編集 保存 移⾏ 統合

$git commit

編集中commit

Page 82: Git勉強会 2016 Gitで卒論を管理しよう回

824.新機能を追加したいとき

ブランチの流れ

chat

mastercommit

作成 移⾏ 編集 保存 移⾏ 統合

$git checkoutmaster

編集中

commit

Page 83: Git勉強会 2016 Gitで卒論を管理しよう回

834.新機能を追加したいとき

ブランチの流れ

chat

mastercommit

作成 移⾏ 編集 保存 移⾏ 統合

$git mergechat

編集中

commit

Page 84: Git勉強会 2016 Gitで卒論を管理しよう回

844.新機能を追加したいとき

コンフリクト(マージの衝突)

Page 85: Git勉強会 2016 Gitで卒論を管理しよう回

854.新機能を追加したいとき

コンフリクト(マージの衝突)

Page 86: Git勉強会 2016 Gitで卒論を管理しよう回

864.新機能を追加したいとき

コンフリクト同じファイルに違う編集をした状態でマージしたとき

TAKENOKOisGOD

KINOKOisGOD

主機能

commit

commit

commit

Page 87: Git勉強会 2016 Gitで卒論を管理しよう回

コンフリクトのエラー対処法

87

<<<<<<<HEAD

echo("TAKENOKOisGOD");=======echo("KINOKOisGOD");>>>>>>>kinoko

コンフリクト状態のファイルを編集してコミット

4.新機能を追加したいとき

Page 88: Git勉強会 2016 Gitで卒論を管理しよう回

コンフリクトのエラー対処法

88

<<<<<<<HEAD

echo("TAKENOKOisGOD");=======echo("KINOKOisGOD");>>>>>>>kinoko

コンフリクト状態のファイルを編集してコミット

消去

4.新機能を追加したいとき

Page 89: Git勉強会 2016 Gitで卒論を管理しよう回

コンフリクトのエラー対処法

89

echo("TAKENOKOisGOD");

コンフリクト状態のファイルを編集してコミット

TAKENOKOisGOD

4.新機能を追加したいとき

Page 90: Git勉強会 2016 Gitで卒論を管理しよう回

5.リモートでリポジトリを使う

90

Page 91: Git勉強会 2016 Gitで卒論を管理しよう回

915.リモートでリポジトリを使う

ひとりでバージョン管理するには

Page 92: Git勉強会 2016 Gitで卒論を管理しよう回

925.リモートでリポジトリを使う

みんなでバージョン管理するには

要:みんながアクセスできるリポジトリ

R

Page 93: Git勉強会 2016 Gitで卒論を管理しよう回

935.リモートでリポジトリを使う

R リモートリポジトリ

それぞれの計算機にあるローカルなリポジトリとは別物の

共有リポジトリ

Page 94: Git勉強会 2016 Gitで卒論を管理しよう回

945.リモートでリポジトリを使う

R リモートリポジトリ

Page 95: Git勉強会 2016 Gitで卒論を管理しよう回

955.リモートでリポジトリを使う

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

エリア

add commit

編集履歴をリポジトリに保存する流れ

Page 96: Git勉強会 2016 Gitで卒論を管理しよう回

965.リモートでリポジトリを使う

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

エリア

add commit

R

pullpushリモート

リポジトリ

Page 97: Git勉強会 2016 Gitで卒論を管理しよう回

リモートリポジトリからローカルリポジトリを新規作成してコピー

+リモートリポジトリの登録

975.リモートでリポジトリを使う

$ git clone [URL]

R

Page 98: Git勉強会 2016 Gitで卒論を管理しよう回

URL:GitHubのコピーしたいリポジトリの右下を参照(HTTPSの場合)

985.リモートでリポジトリを使う

$ git clone [URL]

Page 99: Git勉強会 2016 Gitで卒論を管理しよう回

リモートリポジトリを変更する場合URL:GitHubのコピーしたいリポジトリの

右下を参照(HTTPSの場合)

995.リモートでリポジトリを使う

$ git remote set-url origin [URL]

Page 100: Git勉強会 2016 Gitで卒論を管理しよう回

ローカルリポジトリ変更履歴をリモートリポジトリへアップロード

1005.リモートでリポジトリを使う

$ git push

R

Page 101: Git勉強会 2016 Gitで卒論を管理しよう回

リモートリポジトリ変更履歴をローカルリポジトリへダウンロード

1015.リモートでリポジトリを使う

$ git pull

R

Page 102: Git勉強会 2016 Gitで卒論を管理しよう回

覚えていってほしいもの

1. gitの準備 init

2. コミット add & commit

3. 巻き戻し操作 rebase

4. ブランチ操作 brunch& marge

5. リモートリポジトリ操作 clone & pull& push

102まとめ

Page 103: Git勉強会 2016 Gitで卒論を管理しよう回

以上!

103

Page 104: Git勉強会 2016 Gitで卒論を管理しよう回

104素材元

HUMANPICTOGRAM2.0

http://pictogram2.com/

git

http://git-scm.com/downloads/logos/

Page 105: Git勉強会 2016 Gitで卒論を管理しよう回

105

本題

卒論でGitを管理しよう!!!

Page 106: Git勉強会 2016 Gitで卒論を管理しよう回

106参考資料

参考: http://fromatom.hatenablog.com/entry/2014/02/09/001136

Page 107: Git勉強会 2016 Gitで卒論を管理しよう回

107

筆者視点• 論⽂のバックアップができる

校閲者視点• 誰がどこまで校閲したのかわかる

(先⽣がここまで⾒てるなら、ここから読めばいっか...)

なぜGit管理するのか

Page 108: Git勉強会 2016 Gitで卒論を管理しよう回

108論⽂作成の流れ

master"init"

とりあえず初期コミット

Page 109: Git勉強会 2016 Gitで卒論を管理しよう回

109

master

$ git branch 1st

論⽂作成の流れ

1st

"init"

Page 110: Git勉強会 2016 Gitで卒論を管理しよう回

110論⽂作成の流れ

節を書くor修正する毎にコミットコメントは”add(節番号)”、”fix(節番号)” +αにしましょう

master

1st

"init"

"add1.1" "add1.2"

Page 111: Git勉強会 2016 Gitで卒論を管理しよう回

111論⽂作成の流れ

git pushして⼤学院⽣に校閲してもらう+pdfをWebDavにアップする

master

1st

"init"

"add1.1" "add1.2"

Page 112: Git勉強会 2016 Gitで卒論を管理しよう回

112論⽂作成の流れ

校閲する約束をとりつけたら空コミットで校閲者を記載校閲中、(やる気があれば)待たずに進める

master

1st

"init"

"add1.1" "add1.2"

"revisedby~~"

Page 113: Git勉強会 2016 Gitで卒論を管理しよう回

113

$ git commit --allow-empty -m "revised by (校閲者)"

論⽂作成の流れ

master

1st

"init"

"add1.1" "add1.2"

"revisedby~~"

Page 114: Git勉強会 2016 Gitで卒論を管理しよう回

114論⽂作成の流れ

masterブランチにマージmasterにコミットが無いとマージコミットは発⽣しません

master"init"

"add1.1" "add1.2"

"revisedby~~"

Page 115: Git勉強会 2016 Gitで卒論を管理しよう回

115論⽂作成の流れ

以降、別ブランチに切って修正+加筆 ...

master"init"

"add1.1" "add1.2"

"revisedby~~"

"fix1.1" "add2.1"2nd

Page 116: Git勉強会 2016 Gitで卒論を管理しよう回

116

前項(master)と現項(Nst)をgit checkoutで⾏き来できる

(必要なければ全部masterで良いかも)

(校閲の際に前回の校閲との差分も⾒やすそう)

ブランチを切る理由

ブランチ分ける必要ある?

Page 117: Git勉強会 2016 Gitで卒論を管理しよう回

117

実際にやってみよう!

Page 118: Git勉強会 2016 Gitで卒論を管理しよう回

118

1. git clone で論⽂テンプレートをダウンロード

2. リモートリポジトリにgitlabのリポジトリを設定

3. 0thブランチを作成

4. document/introduction.tex の1.1節 を編集

5. コメントつけてコミット

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

7. マージ

やることリスト

Page 119: Git勉強会 2016 Gitで卒論を管理しよう回

119