Category Archives: Git

git コマンド

流れ

  1. ワークディレクト変更
  2. indexに追加
  3. コミット(head更新)
  4. headをpush

各コマンド

git add .
git diff // 何もでない
git commit -m "初回コミット"
// ファイルを修正
git diff

// diffがでる
@@ -1 +1 @@
-test
+test a

git add .
git diff // 何もでなくなる。ワークディレクトリとindexの差分をみるため
git diff --cached // HEADとindexの差をみると差分が確認できる
@@ -1 +1 @@
-test
+test a

// headの状態に戻す ワークディレクトリにも修正したものは残らない
git checkout HEAD test.rb

// また修正する
git diff // 差分確認できる
git add .
git diff // 差分確認できなくなる
git reset HEAD test.rb // indexしたものをワークディレクトリに戻す
git diff // 差分を確認できるようになる。

git reset

各メソッド

// head, index, ワークディレクトリすべて削除
git reset --hard head~

// headのみ削除(indexされた状態で残る)
git reset --soft head~

// head, indexを削除
git reset --mixed

テスト

// ファイル修正
git add .
git commit -m "修正"
git reset --soft head~ // indexされた状態で残る
git diff --cached // indexされた状態を確認できる
// 再度コミット
git reset --mixed head~ // head, indexも削除される
git diff cached // 何もない
git diff // 確認できる
// 再度コミット
git reset --hard head~ // head, index, ワークディレクトが削除される
git diff --cached // 何もない
git diff // 何もない

その他

// 前回のコミットとの差分を確認
git diff HEAD^ HEAD

branchから分岐

branch1作成

  • branch1.rb
  • common.rb

branch2作成

branch1をbranch2にマージ

screen-shot-2016-12-22-at-10-28-18

branch2の修正

  • branch2.rb

masterにマージ

  • branch1をmasterにマージ
  • branch2に最新のmaster(branch1を含んだもの)を取り込み
  • branch2をマスタにマージ

確認

branch2をマスタにマージする際のプルリクを確認すると、
branch2.rb のみとなっているので、正しく処理できていることを確認できた。
screen-shot-2016-12-22-at-10-34-13

screen-shot-2016-12-22-at-10-34-18

screen-shot-2016-12-22-at-10-36-19

screen-shot-2016-12-22-at-10-36-24

gitで空フォルダの管理方法

  1. 対象のフォルダに空の.gitkeepファイルを作成
  2. .gitignore修正
csv/*
!.gitkeep // .gitkeepはgitで管理する

2階層以上ある場合

以下のような書き方をしないとうまくいかなかった

csv/fbt0901/*
!csv/fbt0901/.gitkeep

GhEのgit config設定

~/.gitconfig

[user]
  name = {名前}
  email = {メールアドレス}

[alias]
  a = add
  b = branch
  ch = checkout
  st = status

[color]
  ui = true

[url "ghe:"]
    InsteadOf = https://{GhEのドメイン名}
    InsteadOf = git@{GhEのドメイン名}

~/.ssh/config

Host ghe
  Hostname {GhEのドメイン名}
  User git
  IdentityFile ~/.ssh/aws_git

クローン

git clone git@{GhEのドメイン名}:{アカウント名}/{レポジトリ名}.git 

AWS Github設定

リモート

// キー作成
cd ~
mkdir .ssh
chmod 600 .ssh // 700だとエラーでる
cd .ssh
ssh-keygen -t rsa // キー生成
cat {上記で作成したキーの名称}.pub // キーを取得

Github

キーを登録

リモート

vi config

// 以下を追記
Host github
  Hostname github.com
  User git
  IdentityFile ~/.ssh/{作成したキーの名称} #秘密鍵の設定

リモート

cd /var/www/ruby
git clone git@github.com:YoheiMiyamoto/{対象のリポジトリ名}.git // クローン
cd {リポジトリ名} // クローンされていることを確認
git pull origin master // pull

git コミットをまとめる

素材

ff01617 hello
beddb42 edit2
a69a159 edit: hello
5a3552d edit2
3a88803 add: test3

やりたいこと

edit2をまとめたい

実行

// 変更したい直前でrebase
git rebase -i 3a88803
//以下を変更
pick 5a3552d edit2
pick a69a159 edit: hello
pick beddb42 edit2
pick ff01617 hello

// 以下のように変更。順番も変える。
pick 5a3552d edit2
s beddb42 edit2
pick a69a159 edit: hello
pick ff01617 hello

// コミットメッセージを確認して、vimを終了

プッシュ済みのコミットの修正の場合は、コミット後、以下を実行

git push -f