20210321のGitに関する記事は10件です。

【Git】Changes not staged for commit:とエラーが出たときの対処法

gitでmasterブランチで直接編集した内容をcommitしようとしたとき下記のように怒られました。

masterのuser_test.rbをcommitしようとした
git commit -m "Fix test"
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
        modified:   test/models/user_test.rb

no changes added to commit

Changes not staged for commitを直訳すると「コミットのためにステージングされていない変更」になります。

最後の行は「no changes added to commit」は「コミットするために追加された変更はありません」という意味でした。

変更したものがコミットされていないと言われています。

解決策

エラーの内容通り、Addをしたら解決しました。

stagedに対象のファイルが追加されていなかったため、「コミットのためにステージングされていない」というエラーが表示されたのだと思います。

git add -A

参考

git 2.2 Git の基本 - 変更内容のリポジトリへの記録
https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E5%9F%BA%E6%9C%AC-%E5%A4%89%E6%9B%B4%E5%86%85%E5%AE%B9%E3%81%AE%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%B8%E3%81%AE%E8%A8%98%E9%8C%B2

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

【M1 BigSur】JenkinsからGit(LFS)のチェックアウトからUnityへのビルドまで(Github)

概要

Mac Book Air (M1 2020)
macOS Big Sur 11.2.2

【M1 BigSur】Jenkins導入編
こちらで書かせたいただいた記事の続きです。
この記事を残しておきたかったのでついでにJenkins導入を書いた次第です。
JenkinsからGitでチェックアウトができればいいので別にUnityでなくてもいいですが今回は確認のために利用しています。

一連の流れを記事にしましたが割と困るのが
BigSurでのgit-lfs filter-process: git-lfs: command not foundエラーの回避方法だと思います。

準備

Github

Githubで作成したリポジトリーを使っているのでアカウントは作成しておきましょう。

unityのインストール

・とりあえずUnityはインストールしておいてください。
 今回はUnity2020.3.0f1で試しています。

GitのSSHキー(作っていない場合)

$ ssh-keygen

いろいろ聞かれるみたいですがすべて空白ままエンターして続けました。

生成場所は
Users/[ユーザー名]/.ssh/
に作られるのでこちらを使用してGithubからSSHを登録します。

image.png

GithubのアカウントからSettings>SSH and GPC keysを選択してNew SSH Keyを選択する。

image.png
設定 内容
Title これは好きに入力してください。
Key ここは先ほど作成したUsers/[ユーザー名]/.ssh/id_rsa.pubの中をコピーして貼り付けてください。

このように作られます。

image.png

JenkinsのUnityプラグインを導入

image.png
image.png

インストール後に再起動してもらうためにDownload now and install after restartを選択しました。

image.png

インストールできました。

image.png
image.png

設定したら保存しましょう。

インストールディレクトリにはjenkinsをインストールしたUnityのパスを設定しますが
FinderでUnityからoptionを押しながらするとパスをコピーできます。

unitypath.png

ジョブを作成

image.png

最初なので

unitypath.png

ジョブ名:unity_testお好きな名前
フリースタイル・プロジェクトのビルド
で作成します。

unitypath.png

認証情報を追加します。

unitypath.png

追加した認証情報を選択して保存します。

unitypath.png

これでプロジェクトの設定はできました。

Unityのビルドをしてみる

リポジトリーの準備ができたのでunityに対してビルドしてみます。

適当にビルドするものを用意して試してみました。

BuildTest.cs(ビルドの確認)
BuildTest.cs
using UnityEngine;

namespace Build
{
    /// <summary>
    /// ビルドのサンプル
    /// </summary>
    public class BuildTest
    {
        public static void HelloWorld()
        {
            Debug.Log("Hello World!");
        }
    }
}

Invoke Unity3d Editorを選択して

image.png

image.png

ビルドの確認のために作ったビルドをjenkinsから呼び出してみます。

-quit -batchmode -projectPath /Users/[ユーザー名]/.jenkins/workspace/[githubのプロジェクトパス] -executeMethod Build.BuildTest.HelloWorld

/Users/[ユーザー名]/.jenkins/workspace/[githubのプロジェクトパス]

を設定してビルド実行してみましょう。

ビルド時のエラー

git-lfs filter-process: git-lfs: command not found

GitLFSをインストールしているか確認してなければインストール

ターミナル:-zsh
% git lfs version
インストールなし
git: 'lfs' is not a git command. See 'git --help'.
インストールあり
git-lfs/2.13.2 (GitHub; darwin amd64; go 1.15.6)

git-lfsをインストール

ターミナル:-zsh
% brew install git-lfs

BigSurではCatalinaと違って読み取り専用な/usr/bin/などを一時的に無効にしてシンボリックリンクを作成できないみたいなので、Appleの公式の書かれている書き込み可能なマウントパスに設定してgit-lfsのシンボリックリンクを作成します。

・FileVaultを無効にする
FileVault.png

・リカバリモードで再起動して実行します(M1の場合は電源ボタンを長押ししてリカバリーモードに入ります。)

セキュリティの確認をします。

ターミナル:-zsh
% csrutil status
System Integrity Protection status: enabled.

enabledの場合は無効に

ターミナル:-zsh
% csrutil disable
ターミナル:-zsh
% csrutil authenticated-root disable

MacOSに再起動します。

ここからgit-lfsのシンボリックリンクを作成するためにマウントフォルダーを作成してディスクをマウントします。

ターミナル:-zsh
% mkdir ~/mount
ターミナル:-zsh
% sudo mount -o nobrowse -t apfs /dev/[デバイス] ~/mount

[デバイス]はディスクユーティリティの値を見ます。

あなたのルートを検索-あなたのルートは/dev/disk1s2s3であればmount実行し、最後のを切り落とす、例えば、あなたは/dev/disk1s2をマウントします

Appleの公式に書かれているの通りにdisk3s1s1の場合はdisk3s1でマウントします。

diskdeveice.png

ターミナル:-zsh
% sudo ln -s /usr/local/bin/git-lfs ~/mount/usr/bin/
ターミナル:-zsh
% sudo bless --folder ~/mount/System/Library/CoreServices --bootefi --create-snapshot

そのまま再起動

ターミナル:-zsh
% sudo reboot

再度jenkinsのビルド実行してみてください。

参考リンク

【Jenkins】GitのSSH接続をするための認証情報を設定する【GitHub】
JenkinsでUnityプロジェクトをビルドする
Unityコマンドライン引数
「macOS Big Sur 」でgit-lfs filter-process: git-lfs: command not foundに対応する

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

Windowsユーザー必見!scoopを使ってコマンドからGit、Node、npm、PHPをダウンロードしてHomebrewを実現しよう!!

皆さんこんにちは!

今日はWinodwsでコマンドから色々ものをダウンロードして見ようかなと思います。

良く解説動画を見ると、Macで説明されている方が多くその度にHomebrewと言う言葉を耳にします。

残念ながらWindowsではこのHomebrewと言うものは存在しません(多分)。

ですが、Homebrewと同じような機能をもつものがWindowsにも搭載されています!

その名はscoop!!

これを使えば、コマンドからNodeやらGitやらをインストールすることができます。

他にもscoopを使えばバージョンの指定を行うことも可能なので、わざわざサイトからダウンロードするなんて作業にはもうさよならです。

scoopをインストールするにはPowerShellでの作業が必須となりますのでご注意を。

それでは早速scoopを使って色々やってみましょう!

scoopのインストール

もう一度言います。

PowerShellで行ってくださいね。

Set-ExecutionPolicy RemoteSigned -scope CurrentUser
// 実行ポリシーの変更について聞かれるので「Y」を選択
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
scoop bucket add extras
scoop bucket add versions

この2つは良く使うのでインストールしてください。

Gitの導入

scoop install git

これでGitをインストールすることができました!

git --version

バージョンが返ってくればOK!

環境変数のPATHも自動で通してくれるのでめちゃ便利!

ついでにopensshも取得

scoop install openssh

Nodeのインストール

お次はNodeをインストールし見ましょう!

scoop install nodejs

バージョン指定

バージョン指定したい場合は以下のように実行

scoop install nodejs8

ただし、scoop bucket add versionsを行っていない場合は出来ないので注意。

node -v

npm -v

バージョンが返ってくればOK!

PHPの導入

ここからはおまけみたいな感じです。

scoop install php-nts php-nts-xdebug vcredist2017 composer

これでPHPとComposerを使える環境が整いました。

php -v

composer -v

バージョンが返ってくればOK!

'****.dll' ** is not compatible with this PHP build linked with ** in Unknown on line 0

このようなエラーが出る方は、下記の記事が参考になります。

「MSVCR140.dll/VCRUNTIME140.dllがないため、プログラムが開始できません」と表示された場合

コマンドで操作を行うってやっぱり夢ありますよね。

これでバージョン管理も楽になるので、是非活用してください!

以上、「Windowsユーザー必見!Homebrewみたいにscoopを使ってコマンドからGit、Node、npm、PHPをダウンロードしてみよう!!」でした!

Thank you for reading

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

Gitでsubtreeを使用して複数のリポジトリを扱う

概要

複数のリポジトリをまとめて管理するリポジトリを作成する。
例えば、front, backの二つのリポジトリを、mainリポジトリで管理する。

ディレクトリ構成
main
├── front
└── back

準備

以下三つのリポジトリを用意する

  • main
  • front
  • back

やること (mainにfrontを追加)

1. mainディレクトリに移動

$cd main

2. frontをリモートに追加

$git remote add -f front git@github.com:front.git

3. frontをsubtreeに追加

$git subtree add --prefix=front front main

prefixでディレクトリを指定、frontのmainブランチを追加する。
勝手にコミットされる。

やること (mainにbackを追加)

mainにfrontを追加と同様

subtreeのリポジトリの更新を取り込む

git subtree pull --prefix=front front main

参考サイト

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

GitHub for Unityでコミットできない時

起こった現象

プロジェクトの途中でGitHub for Unityを導入したところ、Commitボタンを押しても「Staging Changes...」のまま動かず、しばらく経つとコミット自体が自動キャンセルされる。

(GitHub for Unityの導入方法は以下の記事を参考にさせていただきました。)

【超初心者向け】Unityのプロジェクトを、GitHub for Unityを使って超簡単にバックアップする方法 - Qiita

解決策

結局このプロジェクト内では何をやっても直らず、新しいプロジェクトを作って移植したらうまくいきました。

プロジェクトの最初にGitHub for Unityを導入するのがおすすめです。

途中から入れた場合でもコミットできるようになる方法があれば、コメント頂けると幸いです。

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

GitHub Actions内でdocker-compose execコマンド実行したときに"the input device is not a TTY"エラーが出たときの解決法

はじめに

githubactionでdocker-compose exec コマンドを普通に利用すると

the input device is not a TTY

のようなエラーが発生してしまう。

今回はその解決方法を示す。

解決方法

docker-composeコマンドに-T オプションをつける!

例)

$ docker-compose exec -T [docker-compose service] [コマンド]

githubaction内で記述すると、こんな感じです!
```yml:githubactionファイル
name: githubaction sample

省略

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Git checkout current branch #作業ブランチにchekout
uses: actions/checkout@v2
with:
ref: ${{ github.ref }}
- name: docker compose exec command sample
run: docker-compose up -d &&
docker-compose exec -T [docker-compose service] [コマンド]
```

以上です!
みなさんの問題解決につながればと思います。

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

Git~add~

今回はGit addについて学習していきます。

git addとは

そもそも、gitには、作業エリアがあります。今回大切になるのが、ステージングエリアになります。
これはファイルを一時的に置いとくエリアになります。
ここに保存しなくてはどんなに頑張ってターミナルをたたいても、リモートリポジトリにあげることはできません。
そこで使うのがgit addです。
いくつか種類があります。

git add .

こちらは変更、削除、追加したカレントディレクトリー以下のすべてのディレクトリを追加することができます。
(カレントディレクトリーとは、現在の位置ディレクトリのことです)

git add -u (update)

変更、削除されたファイルが追加されます。しかし、新規作成されたファイルはaddされません。

git add -A (all)

変更、削除、追加されたファイルすべてが追加されます。

間違えてaddしてしまった

git reset HEAD ファイル名

とします。

addしてアップしたあとcommitでメモを残して、Pushまでつなげます。

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

Gitインストール手順(Windows10)

注意事項

今回インストールするのは、バージョン2.31.0です。
バージョンが上がったりすることでインストール手順が異なってくる可能性があるのでご注意ください。

①Gitのインストーラーをダウンロード

ダウンロードサイトからDownload 2.31.0 for Windows をクリックし、ファイルをダウンロードする。
image.png

②ダウンロードした「Git-2.31.0-64-bit.exe」を実行

image.png

③ライセンスの確認

特に問題がなければ、[Next]ボタンを押下
image.png

④Gitのインストール先のフォルダを指定

特に指定がなければ、デフォルトのままで可
[Next]ボタンを押下
image.png

⑤オプションの選択

特にこだわりがなければ、デフォルトのままで可
[Next]ボタンを押下
image.png

⑥スタートメニューの選択

スタートメニューへの追加先を選択
特に指定がなければ、デフォルトのままで可
[Next]ボタンを押下
※スタートメニューへ追加したくない場合は「Don't create a StartMenu folder」にチェックを入れる
image.png

⑦エディタの指定

特にこだわりがなければ、デフォルトのままで可
[Next]ボタンを押下
image.png

⑧新しいリポジトリ作成時のブランチ名の設定

特に指定がなければ、デフォルトのままで可
[Next]ボタンを押下
image.png

⑨パスの設定

特に指定がなければ、デフォルトのままで可
[Next]ボタンを押下
image.png

⑩HTTPSの設定

特に指定がなければ、デフォルトのままで可
[Next]ボタンを押下
image.png

⑪改行コードの設定

特に指定がなければ、デフォルトのままで可
[Next]ボタンを押下
image.png

⑫ターミナルの設定

特に指定がなければ、デフォルトのままで可
[Next]ボタンを押下
image.png

⑬git pull コマンドの設定

特に指定がなければ、デフォルトのままで可
[Next]ボタンを押下
image.png

⑭資格情報マネージャー(Credential Manager)の選択

特に指定がなければ、デフォルトのままで可
[Next]ボタンを押下
image.png

⑮オプションの設定

特にこだわりがなければ、デフォルトのままで可
[Next]ボタンを押下
image.png

⑯試験運用オプションの設定

何もチェックをつけずに[Install]ボタンを押下
[Next]ボタンを押下
image.png

⑰インストール開始

image.png

⑱インストール完了

付いているチェックを外して[Finish]ボタンを押下
image.png

⑲インストールされたかの確認

コマンドプロンプトを起動し、「git --version」を実行

>>>git --version
git version 2.31.0.windows.1
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Git】Untracked filesをまとめて削除する方法

プログラミング勉強日記

2021年3月21日

エラーの内容

 git checkout .したのだが、まだ不要なファイル(未追跡ファイル)が残ってしまっていて以下のようになる。

image.png

$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        path...
        path...
nothing added to commit but untracked files present (use "git add" to track)

削除するファイルを確認して削除する

 事前にどのファイルが削除されるか確認してから、削除するときはいかのコマンドを使う。

$ git clean -dfn

 それぞれのコマンドオプションの意味↓

-d:ディレクトリも含めて削除する
-f:強制的に削除する
-n:確認を行う

参考文献

git cleanでUntracked files(未追跡ファイル)をまとめて削除したい時

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

リポジトリをまたがったタグやブランチの複製

Gitで別リポジトリのタグやブランチを複製したときの備忘録

やりたいこと

  • リポジトリ(src)の特定のタグ(version1.0)を、別リポジトリ(dst)のブランチ(edit_version1.0)として複製する
  • リポジトリ(src)の特定のブランチ(edit_version1.0)を、別リポジトリ(dst)のタグ(version1.0)として複製する

手順

リポジトリ(dst)をクローンし、複製先となるローカルブランチ(edit_version1.0)を作成

git clone https://github.com/dst.git
cd dst
git checkout --orphan edit_version1.0
git reset --hard

リモートリポジトリ(tmp)として、リポジトリ(src)を登録

git remote add tmp https://github.com/src.git

リポジトリ(src)から特定のタグorブランチをプル

※タグをプルする場合
git pull tmp version1.0 --allow-unrelated-histories

※ブランチをプルする場合
git pull tmp edit_version1.0 --allow-unrelated-histories

リポジトリ(dst)へプッシュ

※タグ(version1.0)を付ける場合のみ実施
git tag version1.0

git remote rm tmp

※タグ(version1.0)をプッシュする場合
git push origin version1.0

※ブランチ(edit_version1.0)をプッシュする場合
git push origin edit_version1.0

作業ディレクトリの削除

cd ..
rm -rf dst

参考

  • リモートリポジトリのタグの削除
git push --delete origin タグ名
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む