Skip to content

itiut/introduction-to-github-for-eeicer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 

Repository files navigation

GitHub勉強会 for eeicer

Git/GitHubについてお勉強しましょう。

目標

  • GitHubの機能をなんとなく理解する
  • 最低限のGitのコマンドを理解する
  • プルリクエストを送るフローを体験する

準備

インストール

Windows or Mac

GUIクライアントの Source Tree を使うのがおすすめ。

http://www.sourcetreeapp.com/

Source Tree の利点

  • 自動的にフェッチしてくれる
  • 部分的・一行単位のステージ/アンステージがやりやすい

Ubuntu

調べた限り使い勝手の良いGUIクライアントはなかったので、コマンドラインから使う。

$ sudo apt-get install git

CUIの便利ツール

tig

Gitのクライアント。

$ sudo apt-get install tig
hub

gitコマンドを拡張したhubコマンド。実行にはRubyが必要。

github/hub

設定

公開鍵の登録

https://github.com/settings/ssh

右上のAdd SSH keyをクリック。

公開鍵~/.ssh/id_rsa.pubの中身をKeyにコピペする。

GitHub Educationの申し込み

7ドル/月のディスカウントを2年間受けられるので、Microプラン(プライベートリポジトリ5)が無料で利用できる。

大学ドメインのメールアドレスの登録が必要。

https://education.github.com/

GitHubの機能

ユーザーに対して

Follow

他のユーザーをフォローできる。

フォロイーが新しくリポジトリを作った・フォークしたなどの情報がNews Feedに流れてくる。

Public contributions

コミット数を時系列に沿って可視化したもの。

コード書いてるか書いてないかが即わかる。

リポジトリに対して

Watch

リポジトリの更新状況やissueなどの情報がNews Feedに流れてくる。

Star

いわゆるfav

Fork

他のユーザーのリポジトリのコピーを作成する。

Issues

バグ報告・要望・todoなど。

対応が終わったらcloseするかんじ。

Pull Requests

フォークしたリポジトリの更新を、フォーク元に反映させるためのリクエスト。

フォーク元のユーザーが、更新を取り込むかどうかを決める。

その他の機能

Gist

https://gist.github.com/

スニペットを登録しておける。

ちょっとしたコマンドや設定とかを書いておくと忘れても大丈夫。

Gitのコマンド

リポジトリ間の操作

clone

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

リモートリポジトリにはURLごとに名前をつけることができ、メインのものを慣習的にoriginと名付ける。

+ - - - - - -+          + - - - - -+
' remote:    '          ' local:   '
'            '          '          '
' +--------+ '  clone   ' +------+ '
' | origin | ' -------> ' | repo | '
' +--------+ '          ' +------+ '
'            '          '          '
+ - - - - - -+          + - - - - -+

pull

リモートリポジトリの更新を、ローカルリポジトリに取り込む。

正確には、更新をダウンロードするだけのfetchと、取り込むmergeもしくはrebaseの2つのステップが実行される。

+ - - - - - -+         +- - - - - +
' remote:    '         ' local:   '
'            '         '          '
' +--------+ '  pull   ' +------+ '
' | origin | ' ------> ' | repo | '
' +--------+ '         ' +------+ '
'            '         '          '
+ - - - - - -+         +- - - - - +

push

ローカルリポジトリの更新を、リモートリポジトリに反映させる。

+ - - - - - -+         +- - - - - +
' remote:    '         ' local:   '
'            '         '          '
' +--------+ '  push   ' +------+ '
' | origin | ' <------ ' | repo | '
' +--------+ '         ' +------+ '
'            '         '          '
+ - - - - - -+         +- - - - - +

ローカルリポジトリ内の操作

3つの状態

git管理下のディレクトリのファイルには3つの状態がある。

modified

リポジトリと比べて、ファイルが変更された状態。

staged

変更を実際にリポジトリに反映させるために、変更にされたファイルに印をつけた状態。

commmited

ファイルの変更が、リポジトリに反映された状態。

+----------+  add   +--------+  commit   +----------+
| modified | -----> | staged | --------> | commited |
+----------+        +--------+           +----------+

add

変更されたファイルにstagedの印をつける。

commit

stagedなファイルの変更を、リポジトリに反映させる。

GitHub上の操作

Fork

他のユーザーのリモートリポジトリを、自分のリモートリポジトリとしてコピーする。

+ - - - - - - - - - - +         + - - - - - - - -+
' someone's remote:   '         ' your remote:   '
'                     '         '                '
' +-----------------+ '  fork   ' +------------+ '
' |     origin0     | ' ------> ' |  origin1   | '
' +-----------------+ '         ' +------------+ '
'                     '         '                '
+ - - - - - - - - - - +         + - - - - - - - -+

Pull Request

フォークしたリポジトリの更新を、フォーク元に反映させるためのリクエストを送る。

+ - - - - - - - - - - +                 + - - - - - - - -+
' someone's remote:   '                 ' your remote:   '
'                     '                 '                '
' +-----------------+ '  pull request   ' +------------+ '
' |     origin0     | ' <-------------  ' |  origin1   | '
' +-----------------+ '                 ' +------------+ '
'                     '                 '                '
+ - - - - - - - - - - +                 + - - - - - - - -+

課題

その他tips

フォーク元のリポジトリの更新を取り込む

フォーク元のリポジトリをupstreamとして登録する。後はfetchしてmergeすればいい。

Syncing a fork · GitHub Help

About

GitHub勉強会 for eeicer

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages