30分でサボれるGit

31
30分でサボれるGit 技術開発G   木村 健

Transcript of 30分でサボれるGit

30分でサボれるGit技術開発G   木村 健

はじめに

• この資料は次の方に効能があります

• Gitを知ってることにしたい技術者各位w

• Gitを使いたくないけど使わないとおこられる各位w

2

この資料のカバーする範囲

• Gitの簡単な使い方

• =最小限のコマンド運用

• rebaseなどの内容については触れない

• branch切れるくらいのところまで

3

Gitを使いこなすためのヒント• よくGitを知っている人を見つけて手なづけておこう(困った時に訊くためw)

• gitコマンド実行したときに英語のメッセージが出ることがあります。無視してはいけません

• Google先生やGoogle翻訳先生に聞いてください。ヒントが必ずあります。というか、gitコマンドが困ってメッセージを出してるケースがほとんどです

4

前提条件• コマンドラインベースの資料になりますコマンドラインツールは以下から入手可能

• Windows: https://msysgit.github.io/

• Mac: git コマンド(brew あたりでさくっと)

• おそらくSourceTree使うときにも参考になると思います(つこたことないけど。。。)

5

推薦書籍

• 「アリスとボブのGit入門レッスン」川野辺正博著 秀和システム

• (ごめん、この本読んで資料作ったw)

6

準備編

• BitBucketあたりで新しいリポジトリが既にある前提で話を進めます

• リポジトリは権限があればWeb UIでさくっと作れますので省略

7

公開するとき必要な ファイルなど

• readme.md

• mark down形式のreadme

• 使い方などを書く

• LICENSE

• ライセンスファイル。配布するときは書く

• GitHubならライセンスをプルダウンから選ぶだけで一発でライセンスファイルを作ってくれるので捗るw

8

SVNとの違い• ローカルとリモートの二つのリポジトリがあります

• ローカルの修正はcommitで

• ローカル→リモートはpushコマンドで

• リモート→ローカルはpullコマンドで

• 番号ではなくハッシュ(SHA1)で管理します

• リビジョンはtagを切ってください

• branchはそういうフォルダがリポジトリ内にできるのではなく、branchコマンドで切り替える流儀です

9

gitコマンド使えますか?• まずは”git help”と打ち込んで、何か出るところまで、頑張ってください(何をだw)

• GitHubなどの場合、公開鍵が必要になります。これも他のドキュメントで頑張ってください

• まぁあの、使ってる人がいればこの辺は聞けばいいと思うの

10

メアド設定• gitの設定をします

• git config ̶global user.name “Ayanokoji”

• git config ̶global user.email “[email protected]

• あ、ユーザー名はてきとーで

• メアドは自分のメアドを入れてね♡

11

とりあえずgitで• リモートリポジトリの取得

• git clone URL

• URLはgit/https/sshなどがあります

• gitは高速です

• httpsはgit通さないときに使うと便利ですが、みんなhttpsを使ってる予感がしますw

• 例:git clone https://[email protected]/kimrin/unko.git

• プライベートな場合パスワード訊いてきます。入力してください

12

[重要]回し方1. git pull

1.1.変更をリモートから貰います

2. git add .

2.1.まずは作ったファイルをaddします (.はカレント以下変更のあるファイル全部)

3. git commit -m “心がぴょんぴょんするんじゃーw”

3.1.コミットします(ローカルに)

4. git push

4.1.リモートリポジトリにうpします

13

‒木村健 (~2015)

“以上”

14

ってのは嘘ですがw• インデックスとローカルリポジトリ、リモートリポジトリという三つの仮想空間を意識しながらgitで操作してください

• インデックス:addでまな板に寿司を乗っけるイメージ 乗っけることをステージングと言います これからcommitするものをここに

• ローカルリポジトリ:実際の変更がローカルに反映される場所

• リモートリポジトリ:BitBucketのサーバーに置かれる最終的な成果物

15

コンフリクト(衝突)• gitの操作系コマンドを実行すると、コンフリクトが起こることがあります

• 基本、gitに詳しい人(前述)に聞きましょう(ぉぃ

• というかSVNみたいに自分とotherが分かれてファイルに書かれるので、どちらかを選んでから、commitしましょー

16

gitのその日暮らし ~コマンド編~

• git add

• git reset

• git status

• git commit

• git log

• git push

• git pull

17

git add• [操作コマンド] 作業フォルダ → インデックス

• git add .

• この場合はカレント以下変更のあるファイル全部がインデックスに入る

• 具体的にはファイルをgit add filenameのように指定して使う。

• .gitignoreというファイルをリポのトップに作って、コミットしないファイル群を挙げておくと吉

• 消したファイルも変更として計上したい場合は、git add ̶all .などとして、消したことをインデックスに知らせる。そうしないと消えたことがわからずリポに残る

18

git reset• [操作コマンド] インデックス→ 作業フォルダ

• git reset  HEAD~

• コミットを指定する。HEAD~は一つ前のコミット

• 特定のファイルをインデックスからワークフォルダに戻す

• つまりaddの逆19

git status• [無害コマンド] 現在のファイル状態を見る

• カレントフォルダのファイルについて、現在インデックスに上がっているか、まだステージング(インデックスに上げること)をしてないかが表示される

• バージョン管理下に置きたいけどまだuntrackedなファイルについてはaddして管理下に置く

• modified=変更があった

• new file=新しく管理下に入った

• deleted=消えた

• rmでファイルを消してしまったときは、そのファイルもaddする。ファイル名を指定するのがめんどいときは git add ̶all . のようにする

20

git commit• [操作コマンド]差分をローカルリポジトリにコミットします

• ローカルリポジトリへのsvn commitみたいな感じです

• 通常はgit commit -m “コメント”のように使います。

• windowsの場合は2バイト文字が使えないかもしれません。すみません、エディタを指定するなどして凌いでください。。。

21

git log

• [無害コマンド] 主にcommitした履歴を表示するのに使います

• git log

• git showというコマンドもありますが、これについてはman git-showでご確認ください

22

git push• [操作コマンド:取り扱い注意!] ローカルリポジトリの変更をリモートリポジトリに反映します

• これがsvn commitに近いです。なのでチーム開発のときはこのコマンドを打つ前に一度、入れるものを確認してください!

23

git pull• [操作コマンド] リモートの変更をローカルに反映

• git pull

• 実はgit fetchとgit mergeをやってます。merge操作が行われるので、pullに失敗することもあります

• その時はgit stashするか、ファイルをこぴっておいてgit statusで差分が出ないようにしてから、pullします

24

git checkout

• [操作コマンド:取り扱い注意!] 主にbranchを取り出すときに使います

• git checkout mybranch

• 上書きする系のコマンドなので注意してくだしあ

25

gut branch• ブランチを作成します

• git branchでブランチ一覧を取得できます

• git branch xxx でxxxというブランチを作成します

• そのブランチをgit checkout xxxという感じにcheckoutして変更します

26

その他• git checkout -- file

• インデックスする前のファイルを元に戻せます

• git reset HEAD -- file

• インデックスした後のファイルを元に戻せます

27

• git rm file

• 削除します

• git mv file1 file2

• リネームします

28

• git diff

• コミットする差分の表示

• git tag TAGNAME

• タグを切ります

• gitkコマンド:差分のグラフィカルな表示

29

記号類、表記• コミットには一意なSHA1ハッシュ(40bytes)がつけられます。指定するときは上位の7bytesを16進数で指定可能です。git logに表示されます

• HEAD~1が最新の一つ前のコミットです HEAD~10が10個前のコミットです

• HEAD^1が一つ前の親コミットです

• 詳しくはman gitrevisionsしてね♡30

‒anonymous

“The more we learn,the more we confuse.”

31