Movatterモバイル変換


[0]ホーム

URL:


Takeshi AKIMA, profile picture
Uploaded byTakeshi AKIMA
KEY, PDF3,630 views

20120324 git training

Embed presentation

Downloaded 84 times
イケテルGit勉強会2012/03/24 @akimatter
自己紹介秋間武志福岡に引っ越して約8ヶ月RBCスタッフやってます仕事でgitを使って約4年ノーチラステクノロジーズ福岡開発部隊PM@akimatterhttps://github.com/akmhttp://d.hatena.ne.jp/akm/
今日のタイムテーブル13:00 - Gitってなに?13:30 - 基本操作のハンズオン14:30 - Ruby開発サーバの紹介15:00 - 休憩15:15 - Githubってなに?15:30 - チームプレイをやってみよう16:30 - ディスカッション17:30 - クロージング、会場片付け18:00 - 公開スタッフミーティング
アンケート
普段何を使ってます?     Git  Mercurial  Subversion     CVS     VSS    その他 何も使っていない
Gitってなに?
Gitってなに?Git(ギット)はプログラムなどのソースコード管理を行う分散型バージョン管理システム。http://ja.wikipedia.org/wiki/Git より引用
分散型バージョン管理システム?
主な操作
Q.分散って必須ですか?A. 無理に分散しなくてもいいです
集中型のような運用
ひと手間かける違い
ひと手間かける違い一つのコミットを小さくすることで意図を明確にできますクリアなコードの作り方: 意図が伝わるコミットのしかたhttp://www.clear-code.com/blog/2012/3/13.html
他のメリット動作が速いリモートリポジトリ(例えば開発サーバのリポジトリ)に繋がらない場合でも、コミットを行うことができるgithubいちいち.svnとか作らない
基本操作のハンズオン
最初のコミットまでcd <プロジェクトの親ディレクトリ>mkdir iketeru_gitcd iketeru_gitecho ‘Hello, world!’ > README.mdgit initgit add README.mdgit commit -m “Initial commit”
状態を見てみようgit statusgit diffgit loggit blame README.md
変更を加えてみようREADME.mdに追記 echo ‘Git, a cool SCM’ >> README.md
もう一度見てみようgit statusgit diffgit loggit blame README.md
変更がstageに乗ってない$ 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.md#no changes added to commit (use "git add" and/or "git commit -a")
変更をstageに載せようgit add README.md
変更がstageに載った$ git status# On branch master# Changes to be committed:# (use "git reset HEAD <file>..." to unstage)##   modified: README.md#
コミットしようgit commit -m ‘add my private opinion’
再度見てみようgit statusgit diffgit loggit blame README.md
git log$ git logcommit 9e46acdca5443bad381c7948c83c77de9508dd53Author: akm <akima@nautilus-technologies.com>Date: Fri Mar 16 19:50:28 2012 +0900  add my private opinioncommit 6d387715e14d7d72c04645b6b486ac2b35f4c88eAuthor: akm <akima@nautilus-technologies.com>Date: Fri Mar 16 19:36:54 2012 +0900  Initial commit
git blame README.md$ git blame README.md^6d38771 (akm 2012-03-16 19:36:54 +0900 1) Hello, world!9e46acdc (akm 2012-03-16 19:50:28 +0900 2) “Git, a cool SCM”
便利な機能
コマンドを忘れたらgit --help
コマンドを忘れたらgit help <command>
--amendコミットし直そうgit commit -m ‘add my team opinion’ --amend
--amendコミットログが変わってる$ git logcommit 143b2453bc2ce493eaf7d15ed4773486a76902bdAuthor: akm <akima@nautilus-technologies.com>Date: Fri Mar 16 19:50:28 2012 +0900  add my team opinioncommit 6d387715e14d7d72c04645b6b486ac2b35f4c88eAuthor: akm <akima@nautilus-technologies.com>Date: Fri Mar 16 19:36:54 2012 +0900  Initial commit
stash変更を一時保留しよう作業中echo ‘now thinking.....’ >> README.mdでも急ぎで別の変更をコミットしないと!git stash save ‘pend a change for urgent problem’
stash退避しました$ git logcommit 143b2453bc2ce493eaf7d15ed4773486a76902bdAuthor: akm <akima@nautilus-technologies.com>Date: Fri Mar 16 19:50:28 2012 +0900  add my team opinioncommit 6d387715e14d7d72c04645b6b486ac2b35f4c88eAuthor: akm <akima@nautilus-technologies.com>Date: Fri Mar 16 19:36:54 2012 +0900  Initial commit
stashlistやshowで確認できます$ git stash liststash@{0}: On master: pend a change for urgent problem$ git stash show README.md | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
stash変更はなかったことになります$ git status# On branch masternothing to commit (working directory clean)
stash急ぎの変更をコミット大急ぎの変更   エディタで以下のように変更してくださいHello, world!fooGit, a cool SCMgit add .git commit -m 'fix a fatal bug'
stashに退避していた変更を戻す$ git stash popAuto-merging README.md# 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.md#no changes added to commit (use "git add" and/or "git commit -a")Dropped refs/stash@{0} (f8b03350e0885238db913343722e5c345ea4aeb7)$ cat README.mdHello, world!fooGit, a cool SCMnow thinking.....
stash改めてコミットしよう$ git add README.md$ git commit -m ‘add new line’
ブランチとタグ
ブランチとタグある時点のコミットから別系統の開発を同時に進めたい場合に作るのがブランチリリースなどの重要なタイミングのコミットに対して貼っておくのがタグ
ブランチとタグ
ブランチを作る$ git branch RB-1$ git branch  RB-1* masterブランチRB-1は作られたけど、まだmasterで作業しています
ブランチを切り替える$ git checkout RB-1Switched to branch 'RB-1'$ git branch* RB-1  master$ git status# On branch RB-1nothing to commit (working directory clean)git checkoutでブランチを切り替えることができて、git branchやgit statusで確認できる
まず変更してマージ$ echo ‘extra line’ >> README.md$ git add README.md$ git commit -m ‘add extra line’これで変更がブランチにコミットされました$ git checkout master$ git merge RB-1これでmasterへのマージは完了$ cat README.mdHello, world!fooGit, a cool SCMnow thinking.....extra line
コミットの競合とその解決
masterで変更する$ git checkout master$ echo ‘bar’ >> README.md$ git add README.md$ git commit -m ‘add bar to the end’
RB-1で変更する$ git checkout RB-1$ echo ‘BAZ’ >> README.md$ git add README.md$ git commit -m ‘add BAZ to the end’
マージする $ git checkout master $ git merge RB-1 Auto-merging README.md CONFLICT (content): Merge conflict in README.md Automatic merge failed; fix conflicts and then commit the result.CONFLICT(競合)しちゃった
競合の確認CONFLICT(競合)しちゃった $ git status # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # # Unmerged paths: # (use "git add/rm <file>..." as appropriate to mark resolution) # #    both modified:    README.md # no changes added to commit (use "git add" and/or "git commit -a")
競合を確認する$ cat README.mdHello, world!fooGit, a cool SCMnow thinking.....extra line<<<<<<< HEADbar=======BAZ>>>>>>> RB-1同じ位置(最終行)に違う変更を入れたため競合が発生しました
競合を修正するエディタでREADME.mdを以下のように修正 Hello, world! foo Git, a cool SCM now thinking..... extra line bar and BAZ
競合の修正を確認$ git diffdiff --cc README.mdindex fb2ada9,275ac2a..0000000--- a/README.md+++ b/README.md@@@ -3,4 -3,4 +3,8 @@@ fo  Git, a cool SCM  now thinking.....  extra line- bar -BAZ++bar and BAZ
競合の修正をadd$ git add README.md
競合の修正をcommit $ git commit-m オプションを指定しないとエディタによるコメント入力が求められますが、デフォルトはこんな感じ Merge branch 'RB-1' Conflicts:        README.md # # It looks like you may be committing a MERGE. # If this is not correct, please remove the file #      .git/MERGE_HEAD # and try again. # # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # # Changes to be committed: # #     modified: README.md #
Ruby開発サーバの紹介
Githubってなに?
Wikipediaから抜粋GitHub(ギットハブ)はソフトウェア開発プロジェクトのための共有ウェブサービスであり、Gitバージョン管理システムを使用する。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供している。 2009年のユーザー調査によると、GitHubは最もポピュラーなGitホスティングサイトとなった[3]。このサイトは社会的なネットワーク機能をもち、それはfeeds、followersとして提供されており、ネットワークグラフとして開発者が彼ら自身のバージョンのリポジトリを持つことを視覚的に把握可能にしている。(意訳)
メインの画面
コミットログ
ブランチの一覧
ブランチのネットワーク
作業した人のインパクト
何曜日の何時くらい?
cloneされた数
コラボレータ
メッセージのやりとり
Issue管理
Wikiもある
チームプレイの準備をする
複数のリポジトリここまでは一人で一つのリポジトリを使ってきましたここからはチームで一つのgithubのリポジトリを使いますチームのメンバー数 + 1個のリポジトリを使います
リポジトリの構成
githubにリポジトリを作るチームのリポジトリのオーナーとなる人を一人決めますオーナーがgithubにリポジトリを作成します。他のメンバーについては、作ったリポジトリのコラボレータとなるようにオーナーが設定する必要があります。
githubにリポジトリを作る
githubにリポジトリを作るproject nameに”iketeru_git”を入力して”Createrepogitory”をクリック
githubにリポジトリができた
手順に従って操作するGlobal step: 開発環境全体で一回だけやる手順Next Steps: まだローカルにリポジトリを作っていない場合の手順Existing Git Repo? ローカルにリポジトリを作ってある場合の手順Importing a Subversion Repo?  Subversionのリポジトリからインポートする場合の手順When you're done: 手順が終わったらクリック
既存のリポジトリを使う  もし他のディレクトリに移動していたら  $ cd iketeru_git  githubの指示通り$ git remote add origin git@github.com:akm/iketeru_git.git$ git push -u origin master
リロードすると
反映された!
コラボレータを追加する
コラボレータを追加する
コラボレータを追加するコラボレータのユーザ名を入力して”Add”をクリックしてください
追加された!
リポジトリからcloneするコラボレータはオーナーが作ってくれたリポジトリからcloneして、ローカルのリポジトリからアクセスできるようになります。
コラボレータのローカルのリポジトリは?ひとまず無かったことにしてください。git remote add origin .... によってoriginを追加することは出来ますが、ローカルのリポジトリの各コミットのSHAという識別子は、それぞれ別のものとして振られているため、内容は同じでも全く別ものとして扱われます。
既存のワークスペースの名前を変えておきましょう$ cd <プロジェクトの親ディレクトリ>$ mv iketeru_git iketeru_git.original
cloneしようオーナーのリポジトリのページでURLをコピーしましょう
既存のリポジトリを使う$ cd <プロジェクトの親ディレクトリ>$ git clone <ペーストした文字列>これでオーナーのiketeru_gitと連携するリポジトリを持ったワークスペースが、<プロジェクトの親ディレクトリ>/iketeru_git というディレクトリに作成されます
これでチームプレイの準備が完了しました
はじめてのチームプレイ
変更をローカルでcommit  何か変更$ git commit -m ‘....’
コミットをpush$ git push origin master
他の人はpull$ git pull origin master  変更が反映されてる!
同時に編集した場合
Aさんが変更をローカルで  commit$ git pull origin master  何か変更$ git commit -m ‘....’
Bさんが変更をローカルで  commit$ git pull origin master  Aさんと同じ箇所に別の変更$ git commit -m ‘....’
Aさんがコミットをpush$ git push origin master
Bさんがコミットをpush$ git push origin master  メッセージが出るのでそれに従ってやってみま  しょう
リモートのブランチの操作
ローカルのブランチをorigin  にpush$ git push origin RB-1
originのブランチを全部取得$ git fetch origin$ git branch -r  で確認してください
素敵な資料がたくさん公開されています
チュートリアル・入門git チュートリアル  http://www8.atwiki.jp/git_jp/pub/git-manual-jp/Documentation/  gittutorial.html約20個のコマンドによる日々のGIT活用  http://www8.atwiki.jp/git_jp/pub/git-manual-jp/Documentation/  everyday.htmlPro Git  http://progit.org/book/ja/
簡単まとめgit - 簡単ガイド http://rogerdudler.github.com/git-guide/index.ja.htmlGitを使いこなすための20のコマンド http://sourceforge.jp/magazine/09/03/16/0831212
脱初心者あなたの知らないGit Tips http://keijinsonyaban.blogspot.com/2010/11/git-tips.html【翻訳】Gitをボトムアップから理解する http://keijinsonyaban.blogspot.com/2011/05/git.html
A successful Git branching modelA successful Git branching model を翻訳しました  http://keijinsonyaban.blogspot.com/2010/10/successful-git-branching- model.htmlA successful Git branching model を補助する git-flow を使ってみた  http://d.hatena.ne.jp/Voluntas/20101223/1293111549
ディスカッション実際プロジェクトでどう使う?
テーマの候補 バージョン管理の導入     Gitの導入  Subversionとの共存自動テストとバージョン管理 リリースとバージョン管理      その他

Recommended

PDF
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
PPTX
GitLab CI/CD パイプライン
PDF
Shizudev git hub宿題
PDF
Git 入門
 
PDF
猫にはわからないGit講座
PDF
GitHubの機能を活用したGitHub Flowによる開発の進め方
PDF
@s_ssk13さん向けGitHub入門
PPTX
Stylez GitLab勉強会 第1回
PPTX
Git 勉強会
PPTX
2018 07-18 git-hub講座
PDF
git ~start PullRequest~
PDF
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
PDF
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
PPTX
GitLabを16万8千光年ワープさせた話(改)
PPTX
今さら聞けない人のためのGit超入門 2019/11/21
PDF
Android App Development with Gradle & Android Studio
PPTX
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
PDF
gRPC入門
PDF
プロダクトがリリースされるまでを『見える化』することで組織体質を変えていった話
PPTX
色んな環境用の たった一つの.gitConfig
PDF
チームを『組成→安定→高速→最適化』に導くKAIZEN メソッド郡
PDF
North Starアプリ作り,海外コミュニティ,Tips
PDF
Gitのよく使うコマンド
PDF
VSM (Value Stream Mapping)を用いた開発プロセス可視化のお話
PDF
新人Git/Github研修公開用スライド(その1)
PDF
実践 Git - 低レベルに知る Git
PDF
こわくないプルリク
PPTX
はじめてのgithub
PDF
Git勉強会 2016 Gitで卒論を管理しよう回
PDF
Python for Data Analysis第1回勉強会(+git入門)

More Related Content

PDF
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
PPTX
GitLab CI/CD パイプライン
PDF
Shizudev git hub宿題
PDF
Git 入門
 
PDF
猫にはわからないGit講座
PDF
GitHubの機能を活用したGitHub Flowによる開発の進め方
PDF
@s_ssk13さん向けGitHub入門
PPTX
Stylez GitLab勉強会 第1回
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
GitLab CI/CD パイプライン
Shizudev git hub宿題
Git 入門
 
猫にはわからないGit講座
GitHubの機能を活用したGitHub Flowによる開発の進め方
@s_ssk13さん向けGitHub入門
Stylez GitLab勉強会 第1回

What's hot

PPTX
Git 勉強会
PPTX
2018 07-18 git-hub講座
PDF
git ~start PullRequest~
PDF
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
PDF
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
PPTX
GitLabを16万8千光年ワープさせた話(改)
PPTX
今さら聞けない人のためのGit超入門 2019/11/21
PDF
Android App Development with Gradle & Android Studio
PPTX
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
PDF
gRPC入門
PDF
プロダクトがリリースされるまでを『見える化』することで組織体質を変えていった話
PPTX
色んな環境用の たった一つの.gitConfig
PDF
チームを『組成→安定→高速→最適化』に導くKAIZEN メソッド郡
PDF
North Starアプリ作り,海外コミュニティ,Tips
PDF
Gitのよく使うコマンド
PDF
VSM (Value Stream Mapping)を用いた開発プロセス可視化のお話
PDF
新人Git/Github研修公開用スライド(その1)
PDF
実践 Git - 低レベルに知る Git
PDF
こわくないプルリク
PPTX
はじめてのgithub
Git 勉強会
2018 07-18 git-hub講座
git ~start PullRequest~
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLabを16万8千光年ワープさせた話(改)
今さら聞けない人のためのGit超入門 2019/11/21
Android App Development with Gradle & Android Studio
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
gRPC入門
プロダクトがリリースされるまでを『見える化』することで組織体質を変えていった話
色んな環境用の たった一つの.gitConfig
チームを『組成→安定→高速→最適化』に導くKAIZEN メソッド郡
North Starアプリ作り,海外コミュニティ,Tips
Gitのよく使うコマンド
VSM (Value Stream Mapping)を用いた開発プロセス可視化のお話
新人Git/Github研修公開用スライド(その1)
実践 Git - 低レベルに知る Git
こわくないプルリク
はじめてのgithub

Similar to 20120324 git training

PDF
Git勉強会 2016 Gitで卒論を管理しよう回
PDF
Python for Data Analysis第1回勉強会(+git入門)
KEY
Git (実践入門編)
PDF
15分でわかるGit入門
PPTX
Git勉強会
PPT
Githubことはじめ
PPTX
第1回Git勉強会
PDF
Git for beginners
PPTX
今さら聞けない人のためのGit超入門 OSC2018広島版
PDF
ノンプログラマのGit入門
PDF
Git入門-概念編
PDF
Git overview (v 0.96)
KEY
一人でもはじめるGitでバージョン管理
PDF
バージョン管理
PDF
Git勉強会
PDF
はじめてのGit #gitkyoto
PDF
git-webtouchmeeting
PPTX
今さら聞けない人のためのGit超入門 2020/12/19
PPTX
今さら聞けない人のためのGit超入門 GitLab 13対応版
PPTX
今さら聞けない人のためのgit超入門
Git勉強会 2016 Gitで卒論を管理しよう回
Python for Data Analysis第1回勉強会(+git入門)
Git (実践入門編)
15分でわかるGit入門
Git勉強会
Githubことはじめ
第1回Git勉強会
Git for beginners
今さら聞けない人のためのGit超入門 OSC2018広島版
ノンプログラマのGit入門
Git入門-概念編
Git overview (v 0.96)
一人でもはじめるGitでバージョン管理
バージョン管理
Git勉強会
はじめてのGit #gitkyoto
git-webtouchmeeting
今さら聞けない人のためのGit超入門 2020/12/19
今さら聞けない人のためのGit超入門 GitLab 13対応版
今さら聞けない人のためのgit超入門

More from Takeshi AKIMA

PDF
20120831 mongoid
KEY
LT at JavaOne2012 JVM language BoF #jt12_b101
PDF
DSL by JRuby at JavaOne2012 JVM language BoF #jt12_b101
KEY
20120121 rbc rails_routing
PDF
Llonsen object ruby
KEY
jrubykaigi2010-lt-rubeus
PDF
Oktopartial Introduction
PDF
仕事で使ってるプラグイン
20120831 mongoid
LT at JavaOne2012 JVM language BoF #jt12_b101
DSL by JRuby at JavaOne2012 JVM language BoF #jt12_b101
20120121 rbc rails_routing
Llonsen object ruby
jrubykaigi2010-lt-rubeus
Oktopartial Introduction
仕事で使ってるプラグイン

20120324 git training

Editor's Notes


[8]ページ先頭

©2009-2025 Movatter.jp