SlideShare a Scribd company logo
バージョン管理システムチュートリアル
バージョン管理システムチュートリアル
CMSI ハンズオン
2015-09-07
ソースコード: https://github.com/cmsi/vcs-tutorial
資料作成: https://github.com/cmsi/vcs-tutorial/graphs/contributors
1 / 46
バージョン管理システムチュートリアル
Outline
1 準備作業
2 バージョン管理システムとは?
3 git の基礎
4 ブランチとマージ
5 リモートリポジトリとの連携
6 GitHub を用いたオープンソース・ソフトウェアの開発・公開
7 その他
2 / 46
バージョン管理システムチュートリアル
準備作業
ネットワーク設定・MateriApps LIVE! 設定
LAN 接続 (無線 or 有線)
GitHub アカウント登録 (まだアカウントを持っていない人
のみ)
▶ https://github.com にアクセス
▶ “Sign up for GitHub” をクリック, 必要事項を記入した後,
“Create an account”
▶ (オプション) SSH 公開鍵の登録 (“Account settings” ⇒ “SSH
Keys”)
MateriApps LIVE! の設定
▶ 「MateriApps LIVE! の設定」に従い、VirtualBox、
MateriApps LIVE! をインストール・設定
3 / 46
バージョン管理システムチュートリアル
準備作業
Windows や Mac 上で直接 git を使いたい場合
Windows & Mac OS X
▶ http://git-scm.com/downloads からインストーラーをダ
ウンロード
▶ https://www.sourcetreeapp.com/ から SourceTree をイン
ストール
▶ Mac の場合は MacPorts からインストールすることも可
$ sudo port install git
Linux
▶ Redhat 系
$ sudo yum install git
▶ Debian 系
$ sudo apt -get install git
4 / 46
バージョン管理システムチュートリアル
バージョン管理システムとは?
バージョン管理システムの必要性
広く行われている「ファイル管理」
▶ ファイル名・ディレクトリ名による管理
(日付、人名、バージョン番号など)
▶ 手書きのログファイルによる記録
問題点
▶ 記録を付け忘れる、記録を間違う、不完全な記録
▶ 人により命名規則がばらばら
▶ コンピュータ間でコピーを繰り返すと、どれを修正したか、
どれが新しいか分からなくなる
▶ 同じバージョンを元に、別の人が独立に修正を行ってしまう
(バージョンの分岐)
5 / 46
バージョン管理システムチュートリアル
バージョン管理システムとは?
ありがちなパターン
University of Tokyo
25/45
1)
B
3)
A
2)
B
4)
A
6 / 46
バージョン管理システムチュートリアル
バージョン管理システムとは?
バージョン管理システム (Version Control System) とは?
ファイルの履歴をデータベース (リポジトリ) で一括管理する
システム
▶ 全ての修正履歴 (差分) を保存
▶ 更新毎に一意なバージョン番号 (リビジョン) を付与
▶ 任意のバージョン間の比較が可能
▶ もともとはプログラムのソースコードのためのシステム
▶ それ以外のファイル (例えば TeX ファイル) 管理にも使える
チーム・分散環境での作業をサポート
▶ ネットワーク経由でファイルを check out/check in
▶ 複数箇所から同時に更新した場合に衝突を回避するしくみ
▶ ブランチ・マージ・タグの管理
▶ 一人で使っても複数人で使っても超便利
▶ 超優秀な (かつ超まじめな) 秘書のようなもの (しかもタダ)
7 / 46
バージョン管理システムチュートリアル
バージョン管理システムとは?
バージョン・ブランチ・マージ
8 / 46
バージョン管理システムチュートリアル
バージョン管理システムとは?
バージョン管理システムを使うと
University of Tokyo
26/45
1) 2)
A
3)
A 4)B
5)
6)
C
7) ( )
9 / 46
バージョン管理システムチュートリアル
バージョン管理システムとは?
diff と patch
diff: 2 つのテキストファイルの差分を出力するコマンド
▶ ファイル全体を保存するよりコンパクト
▶ 変更点を確認しやすい
$ diff -u file1.txt file2.txt > file.diff
patch: diff コマンドが生成した差分をファイルに適用する
ユーティリティー
▶ もとのファイルと差分から変更後のファイルを生成できる
$ patch < file.diff
10 / 46
バージョン管理システムチュートリアル
バージョン管理システムとは?
実習: diff & patch (1)
単一ファイルの例
$ cp /somewhere/diff/prologue.txt prologue.txt
$ cp prologue.txt prologue -orig.txt
$ vi prologue.txt # prologue.txt を 編 集
$ diff -u prologue -orig.txt prologue.txt >
prologue.diff
$ less prologue.diff
# prologue. d i f f の 中 身 を 見 て み る
$ cp /somewhere/diff/prologue.txt prologue.txt
$ patch < prologue.diff
$ less prologue.txt # prologue. t x t の 中 身 を 確 認
11 / 46
バージョン管理システムチュートリアル
バージョン管理システムとは?
実習: diff & patch (2)
ディレクトリ全体を扱う例
$ cp -r /somewhere/shake shake
$ cp -r shake shake.orig
# s h a k e の 中 の フ ァ イ ル を 編 集 ( フ ァ イ ル の 削 除 や 追 加 も
可)
$ diff -urN shake.orig shake > shake.diff
$ less shake.diff # shake. d i f f の 中 身 を 見 て み る
$ rm -rf shake
$ cp -r /somewhere/shake shake
$ patch -p0 < shake.diff
# s h a k e の 中 身 を 確 認
diff と patch で差分の管理は可能になるが, 履歴は別に管理
しておかなければならない
12 / 46
バージョン管理システムチュートリアル
バージョン管理システムとは?
主なバージョン管理システム
BitKeeper - かつて Linux のカーネルのソース管理に使われ
ていた
CVS (Concurrent Versions System) - ネットワークでの利用
を考慮とした初めてのバージョン管理システム. 以前はよく
使われていた
Git - 現在 Linux の開発に使われている. 分散型リポジトリ
Mercurial - Git のライバル. 分散型リポジトリ
SCCS (Source Code Control System) - 70 年代にベル研で開発
された世界初のバージョン管理システム. 現在は使われない
Subversion - CVS の改良版として開発された. 現在最もポ
ピュラー? Mac OS X や多くの Linux には最初からインス
トールされている
13 / 46
バージョン管理システムチュートリアル
バージョン管理システムとは?
バージョン管理システムの欠点 (面倒な点)
修正前に最新の状態にアップデートしなければならない
⇒ 慣れると習慣になります
全ての修正を「コミット」しなければならない
⇒ 慣れると習慣になります
衝突 (コンフリクト) が発生した時に対処しなければならない
⇒ 衝突に気づかずに修正してしまうほうが怖いです
サーバのセットアップが面倒くさい
⇒ まずはホスティングサービス (GitHub, sourceforge,
bitbucket) を試してみましょう
⇒ まわりにいるプロ (?) に相談しましょう
バージョン管理システムを使うと作業効率が倍以上になる
⇒ 使わないと人生を半分損する
14 / 46
バージョン管理システムチュートリアル
git の基礎
git の基礎
「いつやるの? git 入門」
http://www.slideshare.net/matsukaz/git-28304397
▶ Git の全体図: ページ 33–41
▶ Git の内部構造: ページ 61–115
15 / 46
バージョン管理システムチュートリアル
git の基礎
実習: git の基礎 (1)
ユーザ名などの設定 (ログなどに使用される)
$ git config --global user.name ’XXXX YYYY ’
$ git config --global user.email xxx@yyy.zz
作業用ディレクトリと git リポジトリの作成
$ mkdir myproject
$ cd myproject
$ git init
Initialized empty Git repository in /home/xxx/
myproject /.git/
$ ls -a
. .. .git
全ての履歴情報は .git に保存される. けっして .git を消さな
いように!
16 / 46
バージョン管理システムチュートリアル
git の基礎
実習: git の基礎 (2)
ファイルの作成 & 管理対象に追加 (ステージング)
$ vi readme.txt
$ git add readme.txt
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file >..." to unstage)
#
# new file: readme.txt
#
17 / 46
バージョン管理システムチュートリアル
git の基礎
実習: git の基礎 (3)
リポジトリに登録 (コミット)
$ git commit -m ’Initial commit ’
[master (root -commit) 5714 b10] Initial commit
0 files changed
create mode 100644 readme.txt
$ git status
# On branch master
nothing to commit (working directory clean)
メッセージ中の “5714b10” がコミット ID(の最初の何文字か)
18 / 46
バージョン管理システムチュートリアル
git の基礎
実習: git の基礎 (4)
ファイルを編集
$ vi readme.txt
差分を見てみる
$ git diff
diff --git a/readme.txt b/readme.txt
index eaf543d .. c337c4e 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1 +1,2 @@
Example of readme file.
+Added a new line.
19 / 46
バージョン管理システムチュートリアル
git の基礎
実習: git の基礎 (5)
ステータスを確認
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file >..." to update what will
be committed)
# (use "git checkout -- <file >..." to discard
changes in working directory)
#
# modified: readme.txt
#
no changes added to commit (use "git␣add" and/or "
git␣commit␣-a")
20 / 46
バージョン管理システムチュートリアル
git の基礎
実習: git の基礎 (6)
ステージング, コミット
$ git add readme.txt
$ git commit -m ’Added one line.’
[master c498a65] Added one line.
1 file changed , 1 insertion (+)
ログの確認
$ git log
commit c498a65ae0a267c206ab1e89fbdb6cfc31d56f2f
Author: Synge Todo <wistaria@issp.u-tokyo.ac.jp >
Date: Wed Aug 11 22:37:03 2013 +0900
Added one line.
...
21 / 46
バージョン管理システムチュートリアル
git の基礎
実習: git の基礎 (7)
新しいファイルの作成, ステージング, コミット
$ vi hello.txt
$ git add hello.txt
$ git commit -m ’Created hello.txt ’
サブディレクトリの下にファイルを作成
$ mkdir src
$ vi src/myprog.f
$ git add src/myprog.f
$ git commit -m ’Initial version of myprog.f’
ファイルの削除, 移動, コミット間の差分
22 / 46
バージョン管理システムチュートリアル
ブランチとマージ
ブランチとマージ
「いつやるの? git 入門」
http://www.slideshare.net/matsukaz/git-28304397
▶ ブランチとは: ページ 119–136
▶ ブランチを操作してみよう: ページ 144–157
ブランチを統合するには「マージ (merge)」と「リベース
(rebase)」の 2 つの方法がある
▶ merge のみで十分. また, rebase は使い方を誤ると危険なので
本実習では触れない
▶ 参考:「こわくない Git」
http://www.slideshare.net/kotas/git-15276118
23 / 46
バージョン管理システムチュートリアル
ブランチとマージ
実習: ブランチとマージ (1)
develop ブランチの作成
$ git branch develop
$ git checkout develop
Switched to branch ’develop ’
$ git branch
* develop
master
develop ブランチに doc.txt を作成
$ vi doc.txt
$ git add doc.txt
$ git commit -m ’Created documentation ’
[develop 9b5f323] Created documentation
1 file changed , 1 insertion (+)
create mode 100644 doc.txt
24 / 46
バージョン管理システムチュートリアル
ブランチとマージ
実習: ブランチとマージ (2)
master ブランチに戻ってみる
$ git checkout master
$ ls
hello.txt readme.txt src
doc.txt がなくなっていることに注意
もう一度, develop ブランチに切り替え
$ git checkout develop
$ ls
doc.txt hello.txt readme.txt src
25 / 46
バージョン管理システムチュートリアル
ブランチとマージ
実習: ブランチとマージ (3)
master ブランチでファイルを編集, コミット
$ git checkout master
$ vi hello.txt
$ git add hello.txt
$ git commit -m ’Modified hello.txt ’
この時点で master と develop が枝分かれ!
develop ブランチを master ブランチにマージ
$ git merge develop
Merge made by the ’recursive ’ strategy.
doc.txt | 1 +
1 file changed , 1 insertion (+)
create mode 100644 doc.txt
26 / 46
バージョン管理システムチュートリアル
ブランチとマージ
実習: ブランチとマージ (4)
コミットグラフ (の一部) を表示
$ git log --graph
...
GitHub (後述) を使っている場合には, ブラウザでコミットグ
ラフを見ることができる
27 / 46
バージョン管理システムチュートリアル
ブランチとマージ
実習: ブランチとマージ (5)
今度はコンフリクトが起こるような修正を行ってみる
$ git checkout develop
$ vi hello.txt # 先 程 と 同 じ 場 所 を 違 う 文 字 列 に 修 正
$ git add hello.txt
$ git commit -m ’Modified hello.txt differently ’
マージしようとすると失敗する!
$ git checkout master
Switched to branch ’master ’
$ git merge develop
Auto -merging hello.txt
CONFLICT (content ): Merge conflict in hello.txt
Automatic merge failed; fix conflicts and then
commit the result.
28 / 46
バージョン管理システムチュートリアル
ブランチとマージ
実習: ブランチとマージ (6)
hello.txt の中を見るとコンフリクトした箇所がわかる
$ cat hello.txt
<<<<<<< HEAD
hello , CMSI
=======
hello , MateriApps
>>>>>>> develop
’<<<<<<<’ と’>>>>>>>’ の間の領域がコンフリクト
ファイルを編集してコンフリクトを解消, コミット
$ vi hello.txt
$ cat hello.txt
hello , MateriApps
$ git add hello.txt
$ git commit -m ’Merge branch develop ’
29 / 46
バージョン管理システムチュートリアル
リモートリポジトリとの連携
リモートリポジトリとの連携
「いつやるの? git 入門」ページ 161–208
http://www.slideshare.net/matsukaz/git-28304397
30 / 46
バージョン管理システムチュートリアル
リモートリポジトリとの連携
実習: リモートリポジトリとの連携 (1)
実習で用いる GitHub 上のリモートリポジトリ
git@github.com:cmsi/vcs-hands-on.git
ブラウザでのアクセス
https://github.com/cmsi/vcs-hands-on
リモートリポジトリをローカルに複製
$ git clone git@github.com:cmsitest/vcs -practice.
git
Cloning into ’vcs -practice ’...
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (4/4) , done.
remote: Total 4 (delta 0), reused 4 (delta 0)
Receiving objects: 100% (4/4) , done.
31 / 46
バージョン管理システムチュートリアル
リモートリポジトリとの連携
実習: リモートリポジトリとの連携 (2)
課題 1: 自分のページの作成
▶ todo.html を自分の名前にコピーして編集
$ cd vcs -hands -on
$ cp todo.html igarashi.html
$ vi igarashi.html
▶ index.html を編集し, 自分のページヘのリンクを作成
▶ ローカルリポジトリにコミット
▶ リモートリポジトリにプッシュ
$ git push origin master
32 / 46
バージョン管理システムチュートリアル
リモートリポジトリとの連携
実習: リモートリポジトリとの連携 (3)
課題 2: 他の人のページから自分のページへのリンクの作成
▶ リモートブランチ (origin/master) を最新版に更新し, master
にマージ
$ git fetch
$ git merge origin/master
▶ 誰かのページを編集. 自分のページヘのリンクを作成
▶ ローカルリポジトリにコミット
▶ リモートリポジトリにプッシュ
33 / 46
バージョン管理システムチュートリアル
リモートリポジトリとの連携
実習: リモートリポジトリとの連携 (4)
プッシュが失敗した場合
▶ 誰かがすでにプッシュしている
▶ まずリモートリポジトリの内容をマージしてから再度プッ
シュ
$ git fetch
$ git merge origin/master
$ git push origin master
マージの際にコンフリクトした場合
▶ ファイルを修正しコミットした後, プッシュ
コミットグラフの確認
$ git log --graph
あるいはブラウザで
https://github.com/cmsitest/vcs-practice/network
にアクセス
34 / 46
バージョン管理システムチュートリアル
リモートリポジトリとの連携
git ワークフローのまとめ
remote
repository
local
repository
indexwork space
add
commit
push
checkout <file>
fetch
merge/rebase
checkout <commit>
FETCH_HEAD
Basic git working flow
35 / 46
バージョン管理システムチュートリアル
リモートリポジトリとの連携
バージョン管理システムを使う上での注意点
git が管理している領域からファイルを持ちだして編集して
はいけない
大きなバイナリファイル (pdf, exe, doc, tar.gz, zip など) を
git で管理しない
36 / 46
バージョン管理システムチュートリアル
GitHub を用いたオープンソース・ソフトウェアの開発・公開
「公開ソフト」に必要なもの
マニュアル
チュートリアル
ライセンス
ビルドシステム and/or インストーラー
▶ ソースコード配布
Linux で一般的. ソースと一緒にビルド環境 (Makefile,
CMake, configure スクリプト) を配布
▶ バイナリ配布
Windows で一般的. バイナリインストーラー形式で配布
ユーザフレンドリな操作環境 (GUI など)
ユーザサポート体制
37 / 46
バージョン管理システムチュートリアル
GitHub を用いたオープンソース・ソフトウェアの開発・公開
ビルドシステム: CMake
Makefile を生成するためのユーティリティー (configure スク
リプトに対応)
▶ Windows の Visual C++ 用ソリューションファイル, Mac OS
X の Xcode 用プロジェクトファイルの生成も可能
設定は CMakeLists.txt に記述する
テスト (CTest) やバイナリインストーラ作成 (CPack) の機能
もある
ファイルの依存関係の自動検出
必要なライブラリ (MPI, LAPACK 等) の検索機能
38 / 46
バージョン管理システムチュートリアル
GitHub を用いたオープンソース・ソフトウェアの開発・公開
オープンソース・ソフトウェア開発の流れ (例)
GitHub にリポジトリを作成
開発
▶ ソースコード
▶ ビルドシステム
▶ ドキュメント類
▶ テスト
バージョン番号を割り当て
公開
▶ 配布物の作成 (tar.gz, インストーラー)
▶ 配布物のアップロード
▶ アナウンス
次期バージョンの開発へ
39 / 46
バージョン管理システムチュートリアル
GitHub を用いたオープンソース・ソフトウェアの開発・公開
実習: GitHub を用いたオープンソース・ソフトウェアの
開発・公開 (1)
GitHub で新しいリポジトリを作成
▶ https://github.com にログインし, 右上の “Create a new
repo” をクリック
▶ リポジトリの URL は, ページ右下の “SSH clone URL” に表示
されている
GitHub 上のリポジトリをローカルに複製
$ git clone git@github.com:foo/myproject.git # 例
ソースコードを作成
$ cd myproject
$ vi hello.f90 # Fortranの 場 合
$ vi hello.cpp # C++ の 場 合
ソースコードの例: https://github.com/cmsi/
vcs-tutorial/tree/develop/opensource
40 / 46
バージョン管理システムチュートリアル
GitHub を用いたオープンソース・ソフトウェアの開発・公開
実習: GitHub を用いたオープンソース・ソフトウェアの
開発・公開 (2)
ソースコードをローカルリポジトリにコミット
リモートリポジトリにプッシュ
CMakeLists.txt の作成 (例: Fortran の場合)
cmake_minimum_required (VERSION 2.8 FATAL_ERROR)
project(hello NONE) # プ ロ ジ ェ ク ト 名
enable_language (Fortran) # 使 用 す る 言 語
# 作 成 す る バ イ ナ リ 名 と そ れ に 必 要 な ソ ー ス フ ァ イ ル 名
add_executable(hello hello.f90)
41 / 46
バージョン管理システムチュートリアル
GitHub を用いたオープンソース・ソフトウェアの開発・公開
実習: GitHub を用いたオープンソース・ソフトウェアの
開発・公開 (3)
CMakeLists.txt の作成 (例: C++の場合)
cmake_minimum_required (VERSION 2.8 FATAL_ERROR)
project(hello NONE) # プ ロ ジ ェ ク ト 名
enable_language (C++) # 使 用 す る 言 語
# 作 成 す る バ イ ナ リ 名 と そ れ に 必 要 な ソ ー ス フ ァ イ ル 名
add_executable(hello hello.cpp)
ソースファイルが複数ある場合は, それらを列挙すれば良い
CMakeLists.txt をローカルリポジトリにコミット, リモート
リポジトリにプッシュ
42 / 46
バージョン管理システムチュートリアル
GitHub を用いたオープンソース・ソフトウェアの開発・公開
実習: GitHub を用いたオープンソース・ソフトウェアの
開発・公開 (4)
ソースコード, CMakeLists.txt のテスト
$ mkdir myproject -build #
g i t で 管 理 し て い る デ ィ レ ク ト リ の 外 で テ ス ト
$ cd myproject -build
$ cmake $HOME/myproject #
g i t で 管 理 し て い る デ ィ レ ク ト リ を 指 定
$ make # h e l l o が ビ ル ド さ れ る
$ ./ hello
hello , world
さらにドキュメント, ライセンスファイルなどを追加
43 / 46
バージョン管理システムチュートリアル
GitHub を用いたオープンソース・ソフトウェアの開発・公開
実習: GitHub を用いたオープンソース・ソフトウェアの
開発・公開 (5)
リリース作業
▶ 必要なファイル, 修正を全てコミット
▶ タグをつけ, リモートにプッシュ
$ git tag -a 1.0
$ git tag # タ グ の 確 認
$ git push origin 1.0
GitHub では、タグをつけると「リリース」として一覧に現
れる
▶ 「releases」タブをクリックするとリリース一覧が表示される
▶ ソースコード (tar.gz 形式、zip 形式) へのリンクが自動的に作
成される
44 / 46
バージョン管理システムチュートリアル
GitHub を用いたオープンソース・ソフトウェアの開発・公開
実習: GitHub を用いたオープンソース・ソフトウェアの
開発・公開 (6)
配布物にソースコード以外 (バイナリ、マニュアル PDF な
ど) を含めたい場合
▶ いったんアーカイブを作成
$ git archive --format tar --prefix=myproject
-1.0/ 1.0 | gzip > myproject -1.0. tar.gz
$ git archive --format zip --prefix=myproject
-1.0/ 1.0 > myproject -1.0. zip
▶ 必要なファイルを追加したのち、「リリース」の編集ページで
ファイルを追加する
リリースノートの更新, アナウンス
▶ MateriApps, github.io, twitter などを活用
45 / 46
バージョン管理システムチュートリアル
その他
その他の話題
A successful Git branching model (ブランチの上手な使い方)
http://keijinsonyaban.blogspot.jp/2010/10/
successful-git-branching-model.html
Git をボトムアップから理解する (git の中で何が起こってい
るのかを知りたい人向け) http:
//keijinsonyaban.blogspot.jp/2011/05/git.html
46 / 46

More Related Content

What's hot

XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用賢次 海老原
 
git入門(講義っぽく)
git入門(講義っぽく)git入門(講義っぽく)
git入門(講義っぽく)
kataware
 
Agileツール適合化分科会(gitとgit hub)
Agileツール適合化分科会(gitとgit hub)Agileツール適合化分科会(gitとgit hub)
Agileツール適合化分科会(gitとgit hub)
masanori kataoka
 
Mercurial入門(後半)解説版
Mercurial入門(後半)解説版Mercurial入門(後半)解説版
Mercurial入門(後半)解説版
You&I
 
Linux kernelのbspとupstream
Linux kernelのbspとupstreamLinux kernelのbspとupstream
Linux kernelのbspとupstream
wata2ki
 
Git flowについてまとめてみた
Git flowについてまとめてみたGit flowについてまとめてみた
Git flowについてまとめてみた
hiroyuki koga
 
[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について
Yuto Takei
 
Git SourceTreeでバージョン管理しよう
Git SourceTreeでバージョン管理しようGit SourceTreeでバージョン管理しよう
Git SourceTreeでバージョン管理しよう
富士見研究所
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Takashi Uemura
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
Masahide Yamamoto
 
RedmineとGitとスクラム
RedmineとGitとスクラムRedmineとGitとスクラム
RedmineとGitとスクラム
Takashi Okamoto
 
バージョン管理とGit
バージョン管理とGitバージョン管理とGit
バージョン管理とGitsinsoku listy
 
githubハンズオン
githubハンズオンgithubハンズオン
githubハンズオン
Ayaka Ueda
 
分散バージョン管理システムGitの紹介
分散バージョン管理システムGitの紹介分散バージョン管理システムGitの紹介
分散バージョン管理システムGitの紹介
tod esking
 
Git & GitHub を使いこなしてハッピーになろう! - WordBench 名古屋 & concrete5 名古屋 合同勉強会
Git & GitHub を使いこなしてハッピーになろう! - WordBench 名古屋 & concrete5 名古屋 合同勉強会Git & GitHub を使いこなしてハッピーになろう! - WordBench 名古屋 & concrete5 名古屋 合同勉強会
Git & GitHub を使いこなしてハッピーになろう! - WordBench 名古屋 & concrete5 名古屋 合同勉強会
Katz Ueno
 
曖昧 RPM 講座
曖昧 RPM 講座曖昧 RPM 講座
曖昧 RPM 講座
Tetsuya Morimoto
 
Raspberrypi+yocto in Yocto Workshop Japan #1
Raspberrypi+yocto in Yocto Workshop Japan #1Raspberrypi+yocto in Yocto Workshop Japan #1
Raspberrypi+yocto in Yocto Workshop Japan #1
kazuya-nisimura
 
Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~
HommasSlide
 
GitHubワークショップ
GitHubワークショップGitHubワークショップ
GitHubワークショップ
Hiroaki Murayama
 
Yocto bspを作ってみた
Yocto bspを作ってみたYocto bspを作ってみた
Yocto bspを作ってみた
wata2ki
 

What's hot (20)

XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用
 
git入門(講義っぽく)
git入門(講義っぽく)git入門(講義っぽく)
git入門(講義っぽく)
 
Agileツール適合化分科会(gitとgit hub)
Agileツール適合化分科会(gitとgit hub)Agileツール適合化分科会(gitとgit hub)
Agileツール適合化分科会(gitとgit hub)
 
Mercurial入門(後半)解説版
Mercurial入門(後半)解説版Mercurial入門(後半)解説版
Mercurial入門(後半)解説版
 
Linux kernelのbspとupstream
Linux kernelのbspとupstreamLinux kernelのbspとupstream
Linux kernelのbspとupstream
 
Git flowについてまとめてみた
Git flowについてまとめてみたGit flowについてまとめてみた
Git flowについてまとめてみた
 
[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について
 
Git SourceTreeでバージョン管理しよう
Git SourceTreeでバージョン管理しようGit SourceTreeでバージョン管理しよう
Git SourceTreeでバージョン管理しよう
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
 
RedmineとGitとスクラム
RedmineとGitとスクラムRedmineとGitとスクラム
RedmineとGitとスクラム
 
バージョン管理とGit
バージョン管理とGitバージョン管理とGit
バージョン管理とGit
 
githubハンズオン
githubハンズオンgithubハンズオン
githubハンズオン
 
分散バージョン管理システムGitの紹介
分散バージョン管理システムGitの紹介分散バージョン管理システムGitの紹介
分散バージョン管理システムGitの紹介
 
Git & GitHub を使いこなしてハッピーになろう! - WordBench 名古屋 & concrete5 名古屋 合同勉強会
Git & GitHub を使いこなしてハッピーになろう! - WordBench 名古屋 & concrete5 名古屋 合同勉強会Git & GitHub を使いこなしてハッピーになろう! - WordBench 名古屋 & concrete5 名古屋 合同勉強会
Git & GitHub を使いこなしてハッピーになろう! - WordBench 名古屋 & concrete5 名古屋 合同勉強会
 
曖昧 RPM 講座
曖昧 RPM 講座曖昧 RPM 講座
曖昧 RPM 講座
 
Raspberrypi+yocto in Yocto Workshop Japan #1
Raspberrypi+yocto in Yocto Workshop Japan #1Raspberrypi+yocto in Yocto Workshop Japan #1
Raspberrypi+yocto in Yocto Workshop Japan #1
 
Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~
 
GitHubワークショップ
GitHubワークショップGitHubワークショップ
GitHubワークショップ
 
Yocto bspを作ってみた
Yocto bspを作ってみたYocto bspを作ってみた
Yocto bspを作ってみた
 

Similar to Version Control System Tutorial バージョン管理システムチュートリアル

猫にはわからないGit講座
猫にはわからないGit講座猫にはわからないGit講座
猫にはわからないGit講座Yusei Yamanaka
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門
to_ueda
 
VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011 VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011
Hiro Yoshioka
 
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回
kinme modoki
 
Git 勉強会
Git 勉強会Git 勉強会
Git 勉強会
kinme modoki
 
Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門
kazuki kuriyama
 
Gitの紹介
Gitの紹介Gitの紹介
Gitの紹介
Shoot Morii
 
Git/GitHub
Git/GitHubGit/GitHub
Git/GitHub
Nariaki Tateiwa
 
Git社内勉強会資料
Git社内勉強会資料Git社内勉強会資料
Git社内勉強会資料
Kenji Takei
 
Github入門2014
Github入門2014Github入門2014
Github入門2014
Akihiko Shirai
 
Git handson
Git handsonGit handson
Git handson
Ryuto Yasugi
 
git ~start PullRequest~
git ~start PullRequest~git ~start PullRequest~
git ~start PullRequest~
Souichirou Andou
 
ソフトウェア工学2023 08 GitHub
ソフトウェア工学2023 08 GitHubソフトウェア工学2023 08 GitHub
ソフトウェア工学2023 08 GitHub
Toru Tamaki
 
今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編
VirtualTech Japan Inc./Begi.net Inc.
 

Similar to Version Control System Tutorial バージョン管理システムチュートリアル (20)

猫にはわからないGit講座
猫にはわからないGit講座猫にはわからないGit講座
猫にはわからないGit講座
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門
 
VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011 VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011
 
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回
 
Git 勉強会
Git 勉強会Git 勉強会
Git 勉強会
 
Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
Gitの紹介
Gitの紹介Gitの紹介
Gitの紹介
 
Git地図
Git地図Git地図
Git地図
 
Git&GitHub入門
Git&GitHub入門Git&GitHub入門
Git&GitHub入門
 
Git overview (v 0.96)
Git overview (v 0.96)Git overview (v 0.96)
Git overview (v 0.96)
 
Git/GitHub
Git/GitHubGit/GitHub
Git/GitHub
 
Git社内勉強会資料
Git社内勉強会資料Git社内勉強会資料
Git社内勉強会資料
 
Github入門2014
Github入門2014Github入門2014
Github入門2014
 
Git handson
Git handsonGit handson
Git handson
 
Git (運用編)
Git (運用編)Git (運用編)
Git (運用編)
 
Git 20100313
Git 20100313Git 20100313
Git 20100313
 
git ~start PullRequest~
git ~start PullRequest~git ~start PullRequest~
git ~start PullRequest~
 
ソフトウェア工学2023 08 GitHub
ソフトウェア工学2023 08 GitHubソフトウェア工学2023 08 GitHub
ソフトウェア工学2023 08 GitHub
 
今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編
 

More from Computational Materials Science Initiative

MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
Computational Materials Science Initiative
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
Computational Materials Science Initiative
 
MateriApps LIVE!の設定
MateriApps LIVE!の設定MateriApps LIVE!の設定
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
Computational Materials Science Initiative
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
Computational Materials Science Initiative
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
Computational Materials Science Initiative
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
Computational Materials Science Initiative
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
Computational Materials Science Initiative
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
Computational Materials Science Initiative
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
Computational Materials Science Initiative
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
Computational Materials Science Initiative
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
Computational Materials Science Initiative
 
MateriApps LIVE!の設定
MateriApps LIVE!の設定MateriApps LIVE!の設定
ALPSチュートリアル
ALPSチュートリアルALPSチュートリアル
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
Computational Materials Science Initiative
 
MateriApps LIVE!の設定
MateriApps LIVE!の設定MateriApps LIVE!の設定
MateriApps: OpenMXを利用した第一原理計算の簡単な実習
MateriApps: OpenMXを利用した第一原理計算の簡単な実習MateriApps: OpenMXを利用した第一原理計算の簡単な実習
MateriApps: OpenMXを利用した第一原理計算の簡単な実習
Computational Materials Science Initiative
 
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
Computational Materials Science Initiative
 
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
Computational Materials Science Initiative
 

More from Computational Materials Science Initiative (20)

MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE!の設定
MateriApps LIVE!の設定MateriApps LIVE!の設定
MateriApps LIVE!の設定
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE!の設定
MateriApps LIVE!の設定MateriApps LIVE!の設定
MateriApps LIVE!の設定
 
ALPSチュートリアル
ALPSチュートリアルALPSチュートリアル
ALPSチュートリアル
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE!の設定
MateriApps LIVE!の設定MateriApps LIVE!の設定
MateriApps LIVE!の設定
 
MateriApps: OpenMXを利用した第一原理計算の簡単な実習
MateriApps: OpenMXを利用した第一原理計算の簡単な実習MateriApps: OpenMXを利用した第一原理計算の簡単な実習
MateriApps: OpenMXを利用した第一原理計算の簡単な実習
 
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
 
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
 

Version Control System Tutorial バージョン管理システムチュートリアル