- 投稿日:2020-07-04T17:24:29+09:00
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.csCSV形式に変換
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
- 投稿日:2020-07-04T15:09:37+09:00
iPhoneアプリの新規ブランクプロジェクト作成
前提
- この記事はXcode 11.5をベースに記載しています。
1. セットアップ
App StoreからXcodeをインストールしておく。
複数の開発者で開発する場合はバージョンを揃えておく。Cocoa Podsもセットアップしておく。
参考: CocoaPodsの導入と利用 - Qiita2. Xcodeで新規プロジェクト作成
Xcodeを起動し、
Create New Xcode Project
->Single View App
を指定して次へ。
Product Name
とOrganization Name
は任意の名前を指定。
Language
はSwift
、User Interface
はStoryboard
を指定して次へ。
ファイルの保存場所を指定する際に
Create Git Repogitory on my Mac
にチェックをするとGitリポジトリが初期化される(チェックを忘れても後からgit init すれば OK)プロジェクトが開いたら、一旦実行してみる。
iOS Simulatorのデバイスが選択されていないとエラーになる場合があるので注意。
3. Cocoa Pods 初期化
Xcodeを閉じて、ターミナルで空のPodfileを作成する
terminalcd /path/to/MyFirstApp pod init
読み込みたいライブラリに応じてPodfileを編集する。ここではまだ何も導入しないでおく。
Podsディレクトリと. xcworkspaceファイルを作成する。
terminalpod install
作成されたxcworkspaceファイルの方からXcodeを開く。Podsディレクトリが読み込まれた状態でワークスペースが開く。
4. Gitリポジトリを作成・共有
ターミナルでプロジェクトディレクトリへ移動。
Gitを初期化する(Xcodeプロジェクト作成時にリポジトリを作成をチェックしている場合は省略)
terminalcd /path/to/MyFirstApp git init
.gitignore ファイルを作成する
terminaltouch .gitignore ls -al open .gitignore.gitignoreファイルに、以下のサイトのテンプレートを貼り付ける
- gitignore/Swift.gitignore at master · github/gitignore
(参考:CocoaPods を .gitignore すべきか - Qiita )全てのファイルをgitコミット対象としてステージ
terminalgit add -A git status #ステージされている状態を確認プロジェクトをローカルgitにコミット
terminalgit commit -m "initial commit"Githubなどでリモートリポジトリを作成する
- GitHubローカルGitのリモート接続先に作成したリモートリポジトリを紐づける
terminalgit remote add origin https://path/to/your-repositoryリモートリポジトリにプッシュ
terminalgit push -u origin master
ブランクプロジェクトの準備完了
- 投稿日:2020-07-04T15:09:37+09:00
iOSアプリの新規ブランクプロジェクト作成
前提
- この記事はXcode 11.5をベースに記載しています。
1. セットアップ
App StoreからXcodeをインストールしておく。
複数の開発者で開発する場合はバージョンを揃えておく。Cocoa Podsもセットアップしておく。
参考: CocoaPodsの導入と利用 - Qiita2. Xcodeで新規プロジェクト作成
Xcodeを起動し、
Create New Xcode Project
->Single View App
を指定して次へ。
Product Name
とOrganization Name
は任意の名前を指定。
Language
はSwift
、User Interface
はStoryboard
を指定して次へ。
ファイルの保存場所を指定する際に
Create Git Repogitory on my Mac
にチェックをするとGitリポジトリが初期化される(チェックを忘れても後からgit init すれば OK)プロジェクトが開いたら、一旦実行してみる。
iOS Simulatorのデバイスが選択されていないとエラーになる場合があるので注意。
3. Cocoa Pods 初期化
Xcodeを閉じて、ターミナルで空のPodfileを作成する
terminalcd /path/to/MyFirstApp pod init
読み込みたいライブラリに応じてPodfileを編集する。ここではまだ何も導入しないでおく。
Podsディレクトリと. xcworkspaceファイルを作成する。
terminalpod install
作成されたxcworkspaceファイルの方からXcodeを開く。Podsディレクトリが読み込まれた状態でワークスペースが開く。
4. Gitリポジトリを作成・共有
ターミナルでプロジェクトディレクトリへ移動。
Gitを初期化する(Xcodeプロジェクト作成時にリポジトリを作成をチェックしている場合は省略)
terminalcd /path/to/MyFirstApp git init
.gitignore ファイルを作成する
terminaltouch .gitignore ls -al open .gitignore.gitignoreファイルに、以下のサイトのテンプレートを貼り付ける
- gitignore/Swift.gitignore at master · github/gitignore
(参考:CocoaPods を .gitignore すべきか - Qiita )全てのファイルをgitコミット対象としてステージ
terminalgit add -A git status #ステージされている状態を確認プロジェクトをローカルgitにコミット
terminalgit commit -m "initial commit"Githubなどでリモートリポジトリを作成する
- GitHubローカルGitのリモート接続先に作成したリモートリポジトリを紐づける
terminalgit remote add origin https://path/to/your-repositoryリモートリポジトリにプッシュ
terminalgit push -u origin master
ブランクプロジェクトの準備完了
- 投稿日:2020-07-04T11:59:25+09:00
サブモジュールを含むリポジトリの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 1LUFAはサブモジュールなので
--recursive
オプションなしだとcloneはされない仕様です。だからビルド時にLUFAがないと怒られたというわけです。その時は直接LUFAをcloneして該当のディレクトリに配置して無理やりビルドを通しましたが、改めて調べてみるとサブモジュールをまとめてcloneする
--recursive
オプションがあることを知りました。どんなリポジトリでも初回cloneの時は
--recursive
必須というやり方をしたらダメなんでですかね。もしくは--initialclone
みたいな初回専用のオプションとかあればわかりやすくていいのかな。
- 投稿日:2020-07-04T09:46:29+09:00
.gitignoreを後から設定し、git管理から除外する方法
git管理したくないファイルをコミットしてしまった時に、後から.gitignoreファイルを作成し、リポジトリから削除する方法を説明します。
1..gitignoreファイルを作成する
.gitignore を作成したいプロジェクトのディレクトリに移動し、下記コマンドを実行します。
すると、 .gitignore ファイルが作成できます$ touch .gitignore.gitignore が作成できているか確認するために、プロジェクトのディレクトリに行ってみると、.gitignoreファイルは隠しファイルなので、発見することはできません。そこで、「⌘ + shift + .(ドット)」を押すと、こんな感じで隠しファイルを表示することができます。
2. git管理から除外したいフォルダ・ファイルを記入する
.gitignoreファイルを開き、git管理から除外したいフォルダやファイルを記入します。
今回はPodsフォルダ毎除外したいので、下記のように記入します。
.gitignoreの書き方については下記記事が詳しいです。
.gitignore の書き方
[Git] .gitignoreの仕様詳解.gitignorePods/*ここでひとまず.gitignoreファイルをコミットしましょう。
$ git add . $ git commit -m ".gitignore作成"3. 削除したいフォルダ・ファイルをリポジトリから削除する
.gitignoreを設定しても、既にリポジトリに登録されているものはリポジトリに残ったままです。
そこで、下記コマンドを実行し、管理対象から除外します。$ git rm --cached -r 削除したいディレクトリ※ファイルを削除したい場合は下記コマンド
$ git rm --cached ファイル名これで指定したファイル・フォルダをgit管理対象から除外することができるので、あとはコミットまでして完了です。
$ git add . $ git commit -m "Podsフォルダをgit管理対象から除外"