20200704のGitに関する記事は5件です。

gitのコミット履歴からStep数をカウントする(PowerShell版)

たまーに改造規模をStep数で求められることがあるので、gitからカウントするコマンドをメモ。
linuxならawkを使ったやり方がいくつか出てくるが、WindowsかつGitBushとかも入れたくない場合向けに、PowerShellで。

git logの抽出

まずは git log で各ファイルごとの変更(追加行、削除行)をカウント。
コミット者(author)、期間(since、until)を指定して抽出している。
マージコミットは無視したいので、「no-merges」も指定。

PS C:\Work\XXXXX> git log --numstat --no-merges --pretty="" `
 --author="AAAAA" --author="BBBBB" --since=2020-01-01 --until=2020-07-01
9       3       AAA/aaa.cs
5       1       AAA/bbb.cs
13      6       BBB/ccc.cs
3       0       BBB/ddd.cs

CSV形式に変換

PowerShellの「ConvertFrom-Csv」を使ってCSV形式に変換する。

PS C:\Work\XXXXX> git log --numstat --no-merges --pretty="" `
 --author="AAAAA" --author="BBBBB" --since=2020-01-01 --until=2020-07-01 `
 | ConvertFrom-Csv -header add, delete, file -Delimiter "`t"
add delete file
--- ------ ----
9   3      AAA/aaa.cs
5   1      AAA/bbb.cs
13  6      BBB/ccc.cs
3   0      BBB/ddd.cs

合計のカウント

「Measure-Object -sum」でadd, delete列の合計を取得し、「Select-Object」で表示する。

PS C:\Work\XXXXX> git log --numstat --no-merges --pretty="" `
 --author="AAAAA" --author="BBBBB" --since=2020-01-01 --until=2020-07-01 `
 | ConvertFrom-Csv -header add, delete, file -Delimiter "`t" `
 | Measure-Object -sum add, delete `
 | Select-Object Property, Sum

Property  Sum
--------  ---
add        30
delete     10
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

iPhoneアプリの新規ブランクプロジェクト作成

前提

  • この記事はXcode 11.5をベースに記載しています。

1. セットアップ

App StoreからXcodeをインストールしておく。
複数の開発者で開発する場合はバージョンを揃えておく。

Cocoa Podsもセットアップしておく。

参考: CocoaPodsの導入と利用 - Qiita

2. Xcodeで新規プロジェクト作成

Xcodeを起動し、Create New Xcode Project -> Single View App を指定して次へ。

Product Name とOrganization Nameは任意の名前を指定。
Languageは Swift、User Interface は Storyboard を指定して次へ。
image.png

ファイルの保存場所を指定する際にCreate Git Repogitory on my MacにチェックをするとGitリポジトリが初期化される(チェックを忘れても後からgit init すれば OK)

プロジェクトが開いたら、一旦実行してみる。
iOS Simulatorのデバイスが選択されていないとエラーになる場合があるので注意。
image.png

3. Cocoa Pods 初期化

Xcodeを閉じて、ターミナルで空のPodfileを作成する

terminal


    cd /path/to/MyFirstApp

    pod init  

読み込みたいライブラリに応じてPodfileを編集する。ここではまだ何も導入しないでおく。

Podsディレクトリと. xcworkspaceファイルを作成する。

terminal
    pod install 

作成されたxcworkspaceファイルの方からXcodeを開く。Podsディレクトリが読み込まれた状態でワークスペースが開く。

4. Gitリポジトリを作成・共有

ターミナルでプロジェクトディレクトリへ移動。

Gitを初期化する(Xcodeプロジェクト作成時にリポジトリを作成をチェックしている場合は省略)

terminal
    cd /path/to/MyFirstApp

    git init

.gitignore ファイルを作成する

terminal
    touch .gitignore
    ls -al
    open .gitignore

.gitignoreファイルに、以下のサイトのテンプレートを貼り付ける
- gitignore/Swift.gitignore at master · github/gitignore
(参考:CocoaPods を .gitignore すべきか - Qiita )

全てのファイルをgitコミット対象としてステージ

terminal
    git add -A
    git status #ステージされている状態を確認

プロジェクトをローカルgitにコミット

terminal
    git commit -m "initial commit"

Githubなどでリモートリポジトリを作成する
- GitHub

ローカルGitのリモート接続先に作成したリモートリポジトリを紐づける

terminal
    git remote add origin https://path/to/your-repository

リモートリポジトリにプッシュ

terminal
     git push -u origin master

ブランクプロジェクトの準備完了

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

iOSアプリの新規ブランクプロジェクト作成

前提

  • この記事はXcode 11.5をベースに記載しています。

1. セットアップ

App StoreからXcodeをインストールしておく。
複数の開発者で開発する場合はバージョンを揃えておく。

Cocoa Podsもセットアップしておく。

参考: CocoaPodsの導入と利用 - Qiita

2. Xcodeで新規プロジェクト作成

Xcodeを起動し、Create New Xcode Project -> Single View App を指定して次へ。

Product Name とOrganization Nameは任意の名前を指定。
Languageは Swift、User Interface は Storyboard を指定して次へ。
image.png

ファイルの保存場所を指定する際にCreate Git Repogitory on my MacにチェックをするとGitリポジトリが初期化される(チェックを忘れても後からgit init すれば OK)

プロジェクトが開いたら、一旦実行してみる。
iOS Simulatorのデバイスが選択されていないとエラーになる場合があるので注意。
image.png

3. Cocoa Pods 初期化

Xcodeを閉じて、ターミナルで空のPodfileを作成する

terminal


    cd /path/to/MyFirstApp

    pod init  

読み込みたいライブラリに応じてPodfileを編集する。ここではまだ何も導入しないでおく。

Podsディレクトリと. xcworkspaceファイルを作成する。

terminal
    pod install 

作成されたxcworkspaceファイルの方からXcodeを開く。Podsディレクトリが読み込まれた状態でワークスペースが開く。

4. Gitリポジトリを作成・共有

ターミナルでプロジェクトディレクトリへ移動。

Gitを初期化する(Xcodeプロジェクト作成時にリポジトリを作成をチェックしている場合は省略)

terminal
    cd /path/to/MyFirstApp

    git init

.gitignore ファイルを作成する

terminal
    touch .gitignore
    ls -al
    open .gitignore

.gitignoreファイルに、以下のサイトのテンプレートを貼り付ける
- gitignore/Swift.gitignore at master · github/gitignore
(参考:CocoaPods を .gitignore すべきか - Qiita )

全てのファイルをgitコミット対象としてステージ

terminal
    git add -A
    git status #ステージされている状態を確認

プロジェクトをローカルgitにコミット

terminal
    git commit -m "initial commit"

Githubなどでリモートリポジトリを作成する
- GitHub

ローカルGitのリモート接続先に作成したリモートリポジトリを紐づける

terminal
    git remote add origin https://path/to/your-repository

リモートリポジトリにプッシュ

terminal
     git push -u origin master

ブランクプロジェクトの準備完了

次の記事: iOSアプリの作成(ボタンとラベルのみのシンプルコード) - Qiita

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

サブモジュールを含むリポジトリのGit cloneは--recursiveオプションが必要

TL;DR

サブモジュールを含むリポジトリは単純にgit cloneするだけではサブモジュールはcloneされません。
その時は --recursive オプションを追加することでまとめてcloneできます。

git clone --recursive https://github.com/hoge/fuga.git

サブモジュールを含むリポジトリ QMK Firmwareを1発でCloneしたい

自作キーボード Helix のFWとしてQMK Firmwareを使っています。
ビルドガイドに従わず手癖でgit cloneをしました。
(ビルドガイドをさらっとしか読んでいなかったので見逃していました)

# ビルドガイドの手順
git clone --recursive https://github.com/qmk/qmk_firmware.git

# 手癖の手順
git clone https://github.com/qmk/qmk_firmware.git

で、ビルドをすると次のようにLUFA/makefileがないとエラーになります。

tmk_core/protocol/lufa.mk:14: lib/lufa/LUFA/makefile: No such file or directory
/bin/sh: avr-gcc: command not found
make[1]: *** No rule to make target `lib/lufa/LUFA/makefile'. Stop.
make: *** [helix:led_test] Error 1

LUFAはサブモジュールなので--recursiveオプションなしだとcloneはされない仕様です。だからビルド時にLUFAがないと怒られたというわけです。

その時は直接LUFAをcloneして該当のディレクトリに配置して無理やりビルドを通しましたが、改めて調べてみるとサブモジュールをまとめてcloneする--recursiveオプションがあることを知りました。

どんなリポジトリでも初回cloneの時は--recursive必須というやり方をしたらダメなんでですかね。もしくは--initialcloneみたいな初回専用のオプションとかあればわかりやすくていいのかな。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

.gitignoreを後から設定し、git管理から除外する方法

git管理したくないファイルをコミットしてしまった時に、後から.gitignoreファイルを作成し、リポジトリから削除する方法を説明します。

1..gitignoreファイルを作成する

.gitignore を作成したいプロジェクトのディレクトリに移動し、下記コマンドを実行します。
すると、 .gitignore ファイルが作成できます

$ touch .gitignore

.gitignore が作成できているか確認するために、プロジェクトのディレクトリに行ってみると、.gitignoreファイルは隠しファイルなので、発見することはできません。そこで、「⌘ + shift + .(ドット)」を押すと、こんな感じで隠しファイルを表示することができます。
スクリーンショット 2020-07-04 9.00.53.png

2. git管理から除外したいフォルダ・ファイルを記入する

.gitignoreファイルを開き、git管理から除外したいフォルダやファイルを記入します。
今回はPodsフォルダ毎除外したいので、下記のように記入します。
.gitignoreの書き方については下記記事が詳しいです。
.gitignore の書き方
[Git] .gitignoreの仕様詳解

.gitignore
Pods/*

ここでひとまず.gitignoreファイルをコミットしましょう。

$ git add .
$ git commit -m ".gitignore作成"

3. 削除したいフォルダ・ファイルをリポジトリから削除する

.gitignoreを設定しても、既にリポジトリに登録されているものはリポジトリに残ったままです。
そこで、下記コマンドを実行し、管理対象から除外します。

$ git rm --cached -r 削除したいディレクトリ

※ファイルを削除したい場合は下記コマンド

$ git rm --cached ファイル名

これで指定したファイル・フォルダをgit管理対象から除外することができるので、あとはコミットまでして完了です。

$ git add .
$ git commit -m "Podsフォルダをgit管理対象から除外"
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む