20200124のGitに関する記事は9件です。

【個人メモ】SourceTreeでUnityプロジェクト内のフォルダを.gitignoreで管理除外する

はじめに

Unity3Dを使用したプロジェクト開発は多くのパッケージやAsset-Storeアセットを利用が前提となってきました。
今後はPackageManager管理にシフトし、リポジトリへのコミットしなくてもアセット更新が可能な環境が整うようになります。
これに合わせて個人のリポジトリにある.gitignore編集し始めたのですが、正直理解度が足らずうまく設定できず、時間を潰してしまいました。

また.gitignoreの記事はたくさんあれど、調べたい内容が分散気味だったのでたどり着けなかったので、個人的なメモとしてまとめてみました

エントリーのゴール

今回の目的は以下を実行できるようにしたかった
・.gitignoreを作成する
・SourceTreeでの.gitignoreの編集
・gitignoreの記述形式の理解を深める
・Unityプロジェクト上のAssets以下のフォルダ・ファイルの除外
悪い意味で曖昧に運用してた部分を正しくできるにしたかった

.gitignoreを作成する

.gitignore自体は、デフォルトで作られるものか、手書きのテンプレを作ってコピペしていたいのですが、最近は"gibo"で作る方法もあります。
テンプレートも作れるようなので、以後はこちらも運用していきますかね
まだ .gitignore を手で書いてるの?(giboの使い方)

SourceTreeでの.gitignoreの編集

SourceTreeでプロジェクトごとの.gitignoreoは以下で編集できる
・メニューから”リポジトリ”->"リポジトリ設定…”を選択
gitignore_1.png
・表示されるウィンドウで”高度な設定”ボタンを押下gitignore_3.png.png
・リポジトリ限定無視リストパスの横にある”編集”ボタンを押下
テキストエディットで内容を確認、編集できる
gitignore_5.png

.gitignoreの書式について

理解が薄かったので詳細にかかれていたこちらのエントリーを熟読しました
@anqooqie様 [Git] .gitignoreの仕様詳解

0.gitignoreでの記述で注意すること

ちなみに、Gitリポジトリのルート、あるいはOSのルートからの絶対パス指定をする方法はない。
.gitignoreはそこから下のディレクトリにしか影響を及ぼせない。

意識したことなかったけど、これがわかってなくて、反映されないと思い込みすぎてました…

.gitignore
#プロジェクト全体で”XWeaponTrailフォルダ以下”を除外
XWeaponTrail/

1.ユニーク名の除外設定

フォルダ全体でユニーク名であれば、以下のように記述
ex)プロジェクト内の”WeaponTrail"を除外したい
gitignore_6.png

この場合は以下のように記述する

.gitignore
#XWeaponTrailフォルダ以下”を除外
XWeaponTrail/
XWeaponTrail.meta

するとSourceTreeの管理から除外されてるのが確認できた
gitignore_8.png

2.相対パスにあるフォルダ名を除外設定

・Assetsからの相対パスにある特定フォルダを除外したい
Unity-AssetStoreやPackageManagerパッケージで除外したいフォルダが多いと思うので、試しに"Demons"フォルダを除外をしようと思います
gitignore_9.png
.gitignoreに除外したいフォルダのパスで記述するも…
gitignore_12.png
gitignore_13.png
あれれ?除外されなてない…なんでだろう??

改めて仕様を読み直していると間違えていました…以下の部分が重要だったのを解釈できていませんでした。

ちなみに、Gitリポジトリのルート、あるいはOSのルートからの絶対パス指定をする方法はない。
.gitignoreはそこから下のディレクトリにしか影響を及ぼせない。

そこで.gitignoreから

gitignore_14.png
上記に準拠して.gitignoreのあるパスからに変更しましたgitignore_15.png
するとイメージ通り、フォルダ以下が除外することができました
参考記事にありました.gitignoreの書式に注意して書いていけば間違いはないと思います

/を含まない行(fileなど)
.gitignore以下の全サブディレクトリ下にあるこの名前のファイル or ディレクトリを無視する

末尾以外にのみ/を含む行(/file, /path/to/file, path/to/fileなど)
.gitignoreが置いてあるディレクトリをカレントディレクトリとする相対パスで指定されるファイル or ディレクトリを無視する

末尾だけ/な行(directory/など)
.gitignore以下の全サブディレクトリ下にあるこの名前のディレクトリを無視する
末尾以外にも末尾にも/を含む行(/directory/, /path/to/directory/, path/to/directory/など)

.gitignoreが置いてあるディレクトリをカレントディレクトリとする相対パスで指定されるディレクトリを無視する

※最初からちゃんとドキュメントとか読めや…と反省しましたorz
ドキュメント読み込みは本当に重要ですね

おまけ:.gitignoreに記載したのに反映されない

・リポジトリにコミットされたフォルダは除外されない
当たり前だけど既にリポジトリ上に存在するものは、.gitignoreでは除外されない。先に.gitignore設定を行ってからコミットすること

・キャッシュによる未反映
.gitignoreの仕様にたどり着けてない時は、キャッシュを疑ってたりしていました。こういうケースにもたどり着くこともあるので、注意したい

@fuwamaki様:.gitignoreに記載したのに反映されない件

まとめ

効果は薄いかもしれないけど、再度調査で手間とられるよりはいいかと思い、まとめてみました。別に.gitignoreは1ファイルにまとめる必要もないですが、何度も作ることにはなるので、丁度よかったかと思います

ガバ記事なので、ツッコミはお手柔らかにお願いいたしますm(_)m

参考記事

大変参考になりました、誠にありがとうございます
@fuwamaki様:.gitignoreに記載したのに反映されない件
@anqooqie様:[Git] .gitignoreの仕様詳解

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

Git 初期設定

  1. Macには元々Gitがインストールされている。
  2. ターミナルを開いて『git --version』を打ち込んで確認
  3. xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun と表示される
  4. 『xcode-select --install』を入力し、Xcodeをインストール
  5. 『git --version』を再び入力
  6. gitのバージョンが表示される

macOSをアップデートするとこのようなエラーになるみたいです

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

「チーム開発実践入門」感想

「チーム開発実践入門」を読んだ

読んだ本↓ 
チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)
出版社: 技術評論社 – 2014/4/16 池田 尚史 (著), 藤倉 和明 (著), 井上 史彰 (著)

 私は昔、VBプログラマだった。最初に入った会社でプログラマという職種で仕事をし、そのあとも、システム系の仕事にはまることが多かった。転職した会社ではユーザー部門のシステム発注担当という立場も経験し、今ではまたベンダー側のシステム導入時のディレクション担当である。そんな立場として、本書を読んだ。

 この本を読んで最初に思うことは、全てのユーザーは、システムはチーム、つまり複数人がオーバーラップし、引継ぎを重ねて作り上げるものであることを、知った方が良いということだ。システム開発および運用時に管理するべき要素は、ソースコード、データベーススキーマ、設定ファイル、依存関係、要件書や設計書といった、それぞれに役目がある膨大な要素が存在している。それらを、タグとブランチというものを駆使してデバッグや機能改善に適したバージョン管理を行い、またチーム開発として、チケット管理を行いプロジェクトとして統合させたりしなければならない。そして、複雑な要素をタスク化してプロジェクト管理していくマネジメントシステムが、世界共通的に出来上がっているのだ。これを継続するために重要なことが、テストコード・CI・リファクタリングという三種の神器とされ、エンジニアの方々が、炎上案件で何度も丸焦げになって、生み出されて来た仕組なのである。

ユーザー目線で考える、エンジニアの仕事とは

 エンジニアという作り手側には、他者が作ったものを直す、付け加えて拡大するという作業を、効率的且つ品質高く行うための専門的ツールが山のようにある。ツール自体ももちろん日進月歩である。丁寧なこの本の中では、それぞれのツールのオススメを、丁寧に、場合分けしながら、具体的実践的な使い方を提示してくれている。

 エンジニアの仕事は、単に、ユーザー要望をシステム仕様に落とし、設計し、ソースを書くだけではない。作る過程を効率的にするため、作ったものを保守し続けるための配慮を行い、それをサポートするための専門的なツールが山のようにあり、それぞれを、プロジェクトやチームの規模・レベル感によって組み合わせる工夫を行うことに日々血肉を削っている。(たぶん)それを細やかに具体的に紹介したものが、本書である。

世界を良くするため、埋めたり切ったり

 非エンジニアも、ワードやエクセルファイルを複数人が同時に編集して上書きされてしまったことなどあるだろう。ある仕事で私が昔携わっていた仕事では、共有しているエクセルファイルを編集する前にメールで「編集するから1時間程度触らないでください」と関係者に一斉送信し、終わったら「終わりました」というメールを流す、ということをやっていたが、このやり方ではシステム開発は不可能である。
 規模が大きいシステムプロジェクトだと、デバッグ・新機能開発・保守作業で様々な要素を同時編集しなければならない場面が日常的に発生する。差分の中で想定外の不具合が発生した場合、任意の時点まで巻き戻せるということも必須である。前述の私の「ファイル変更をメールで告知」方式だと、絶対無理である。

 Gitという現代のエンジニアにとっては常識中の常識であるバージョン管理の仕組みは、全世界共通のものである。こういう共通仕組みが存在するということは、全世界から知恵を集め、システムを改善していくことが全世界共通的に出来るということである。だからITは飛躍的に発展しているわけだ。プログラムのことが判らない人も、こういう仕組みが存在していることを知るべきだ。自分が作ったものをリリースしてソースが世界中の目にさらされて改善されていく仕組みがあるとは、ものすごい勢いで世界が改善されているということである。

 タグとブランチという方法で、障害発生時の原因究明やロールバックを行いながら同時に新規開発を進める、ということを実現することができる。何かあったとき、これらは戻る箇所になるということを考えながら、エンジニアの方々は、タグを埋めたりブランチを切ったりしながら、日々ソースを書いている。

 この本では、何をバージョン管理すべきか、ということも触れている。ソースコード、要件書設計書などのドキュメント、データベーススキーマとデータ、設定ファイル、ライブラリなど。やり方はひとつではなく、場合によって変えていく必要もあるとして、要素と場合分けを具体的に例示している。

 設定ファイル、依存関係という、システム発注担当者・ユーザー担当者からはほぼ目に見えない、ソースの根幹ではない部品たち、その管理方法もソースの管理のように注意を払う必要があり、その注意点などが記されている。つくづく丁寧な本だと思うが、エンジニアにはそういう丁寧さが要求されている、ということなのだろう。

チケット駆動開発は、ユーザーとエンジニアを繋いでいる。

 昔は、メールで不具合発生連絡や修正・リリース連絡を行っていた。今でも、エクセルで表形式で課題管理を行う管理は、まだまだ存在している。私の管理プロジェクトでも、この方法が生きている。でも、上記のようにバージョン管理とつなげていくためには、スタートとなるタスクの依頼から、管理していかなければならない。タスクとは、現時点でどういう問題が発生しており誰が何をいつまでに行うか、ということである。簡単なことのようだがこれができていないために、プロジェクトは炎上する。
 タスクは検索性の観点も重要である。過去の改修の経緯が判りやすいことが、継続性を担保し、未来へつながっていく。

 丁寧なこの本では、運用方法についても具体的なフローを提示してくれている。例えば、新機能の開発、バグ修正時のワークフロー、開発規模に応じたワークフローなどが例示されており、非常に参考になる。ユーザー目線では、自分が依頼したタスク(チケット)が、そのあとどんな工程を経て、自分が使える状態としてリリースされるのか、ぜひおいかけて欲しいと思う。
 できれば、このチケット管理のワークフローもユーザーにも見える化してしまい、ユーザーにも全体が共有されるくらいが良いと思う。

 丁寧なこの本では、チケット・バグ管理・要求管理のそれぞれの違いと管理上の注意も触れている。この観点は、ぜひユーザー側にも知っておいた方がいい。一括りにして、「動きがなんかおかしい」とエンジニアに話しかけるのは、紙芝居を創るためにテレビ局の制作部門に依頼するようなものである。

とてもとても重要な、「テストコード」

 バージョン管理は素人には入るのが難しい領域なのでプロにお任せした方がいいかもしれないが、テストコードについてはユーザーでも理解した方がいい。なぜなら、ロジックを元に作り上げられたソース(システム)は、場合によってはユーザーの操作要件と乖離することがあり得るからだ。上記のような複雑な管理をされているソース(システム)は、場合によってはその管理に耐えるためにシンプルにさせられてしまう。その結果、ユーザーにとっては当然の、あるいは逆に想定外の操作で重要な不具合が発生することがあり得るからだ。ユーザーとして考えている標準的な操作・運用をできるだけ伝え、それが「テストコード」に表現されているか、確認することが重要で必要だ。自分はやってないけど。

 CIという自動テストの仕組みを使うことで、デグレのリスクも減るが、結局はユーザーのテストも省力化される。この仕組みのおかげで、ユーザーは、運用のために省力化されたテストの時間を使うことができる。ユーザーもエンジニアの方々といっしょに、CIの神様に感謝を捧げた方がいい。

 更に技術は進み、自動化は進み、ブートストラッピングというものが産まれる。これはサーバのセットアップの自動化と、仮想化技術を利用した環境構築の自動化ツールのこと。サーバを100台入れる時とか、超便利!って、そんな規模の開発案件、そうはないんだけど。丁寧なこの本、本当のターゲットは誰なんだろうか。きっと銀行のATMシステムとかでは使いそうなので、私は今後ATMでお金をおろすときに、ブートストラッピングの神様と自分の給与の原資を生み出しているお客様に感謝することにする。違ったらやめる。

最後にもう一度、エンジニアの仕事を考える?

 以上のように、エンジニアという種族の方たちは、ユーザーの問題解決をフローチャート化し、ロジックに落とし、最適技術を探求し、且つ、完成品のテストを見据えたコードの記述+テストを繰り返すことを想定した仕組み+将来的な不具合や機能改善を見越したバージョン管理、などを日々考え、実行しているのである。

 ユーザーも、このようなことを理解して、(あるいは理解したフリをして)
このような世界に心血を注いで、そして私達の業務をラクにしてくれるITシステムとその作り手たちに思いを馳せ、毎日PCに電源を入れる時に手を合わせ、リスペクトした方が良い。ごはんを食べる時に食べ物と作り手に対して手を合わせ、「いただきます」と言うように。

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

LinuxサーバにGitの最新バージョンを導入する

はじめに

  • Linuxで(Linuxに限らずだけれど)Gitをパッケージインストール(yum install gitなど)すると,古いものしか入らない.
  • バージョンアップしやすい形で最新版をインストールする方法を記述する(他の人も同じこと書いてるけれど,参照しやすいように).
  • 参考サイト

作業の手順

# 事前に時刻合わせをしておかないとエラーになる可能性がある

# 依存ライブラリをインストール
sudo yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker gcc

# Gitをインストール(今回はここで入れたgitは後でアンインストールする)
sudo yum -y install git

# rootにスイッチ
sudo su -

# 以下の作業はすべてrootで実行.

# ソースディレクトリまで移動
cd /usr/local/src/
# 公開されているgitのソースをインストール(この作業のために上記でGitをインストールした)
git clone git://git.kernel.org/pub/scm/git/git.git

# パッケージインストールしているgitをアンインストール
yum remove git

# ディレクトリ移動
cd git

# makeする
make prefix=/usr/local all
make prefix=/usr/local install

これ以降、最新バージョンが公開されるたびに、git pullしてmake~すれば最新バージョンにアップデートできる.

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

Ubuntu16.04にGitサーバを立ててドキュメントをGit管理する方法

目的

  • レガシーな環境でもGitによるバージョン管理を行いたくてUbuntuPCにGitのサーバを立てた時の手順をまとめる

今回使用したもの

  • Linux(Ubuntu16.04)のPC2台
  • Linuxマシンにリモートからコマンドを送ることのできるターミナルエミュレータ(tertermなど)が入ったWindowsマシン

皆さんが実施する上で最低限で必要なもの

  • Linux(Ubuntu)PC: 2台
  • Linuxマシンが用意できないけどGitを勉強したい方はこちら

実施条件

  • LinuxPCはOSインストールが完了していること。
  • LinuxPCの管理者権限がある(sudoコマンドが実行できる)こと。

実施方法概要

  1. 準備
  2. リモートリポジトリの作成
  3. SSH鍵作成と登録
  4. clone

実施方法詳細

  1. 準備

    1. 2台あるLinuxPCからGitサーバとして使用するPCとクライアントPCを決める。
    2. git-userユーザの作成

      1. GitサーバPCのsudoコマンドが実行できるユーザで下記コマンドを実行してgit-userというユーザを作成する。
         $ sudo adduser git-user
         >Enter new UNIX password: 任意のgit-userのパスワード入力後Enter
         >Retype new UNIX password: 先に入力した任意のgit-userのパスワード入力後Enter
         >Full Name[]: 空欄でEnter
         >Room Number[]: 空欄でEnter
         >Work Phone[]: 空欄でEnter
         >Home Phone[]: 空欄でEnter
         >Other[]: 空欄でEnter
         >Is the information correct? [Y/n] Yを入力してEnter
      
    3. GitサーバPCのsudoコマンドが実行できるユーザで下記コマンドを実行してgit-userユーザでもsudoコマンドが実行できるようにする。

      $ sudo gpasswd -a git-user sudo
      >Adding user git-user to group sudo
      
    4. GitサーバPCのgit-userユーザで下記コマンドを実行してGitをインストールする。

      $ sudo apt update
      $ sudo apt install git
      $ git --version
      >git version 2.X.X
      
    5. GitサーバPCのgit-userユーザで下記コマンドを実行して認証情報を自動保存するように設定を変更する。

      $ git config --global credential.helper cache
      
    6. GitサーバPCのgit-userユーザで下記コマンドを実行して日本語ファイルでも文字化けしないようにする。

      $ git config --global core.quotepath false
      
    7. GitサーバPCのgit-userユーザで下記コマンドを実行して

    8. GitサーバPCのgit-userユーザで下記コマンドを実行してsshをインストールする。

      $ sudo apt install ssh
      
    9. GitサーバPCのIPアドレス、git-userユーザのパスワードを確認する。

    10. クライアントPCの任意のユーザで下記コマンドを実行してGitをインストールする。

      $ sudo apt update
      $ sudo apt install git
      $ git --version
      >git version 2.X.X
      
    11. クライアントPCの任意のユーザで下記コマンドを実行して認証情報を自動保存するように設定を変更する。

      $ git config --global credential.helper cache
      
    12. クライアントPCの特定のユーザでで下記コマンドを実行して日本語ファイルでも文字化けしないようにする。

      $ git config --global core.quotepath false
      
    13. クライアントPCの特定のユーザでで下記コマンドを実行してユーザとメールアドレスを設定する。

      $ git config --global user.email "任意のメールアドレス"
      $ git config --global user.name "任意のユーザ名"
      
    14. クライアントPCの特定のユーザで下記コマンドを実行してsshをインストールする。

      $ sudo apt install ssh
      
  2. リモートリポジトリの作成

    1. GitサーバPCのgit-userユーザで下記コマンドを実行してリモートリポジトリを格納しておくディレクトリを作成する。

      $ mkdir ~/remote_repository
      
    2. GitサーバPCのgit-userユーザで下記コマンドを実行してtestという名前のリモートリポジトリを作成する。(外部からのpushを許容するため、共有リポジトリとして使用するために--bareをつけて実行する。)

      $ mkdir -p ~/remote_repository/test
      $ cd ~/remote_repository/test
      $ git init --bare
      >Initalized empty Git repository in /home/git-user/remoterepository/test/.git
      
  3. SSH鍵作成と登録

    1. GitサーバPCのgit-userユーザで下記コマンドを実行してリモート役PCにローカル役PCのSSH鍵を登録しておくファイルを作成する。

      $ mkdir ~/.ssh
      $ touch ~/.ssh/authorized_keys
      
    2. クライアントPCの特定のユーザでで下記コマンドを実行してSSH鍵を発行する。(質問は初回鍵発行なら全て空欄でEnterを押下する。下記の問いは初回時)

      $ ssh-keygen -t rsa
      >Enter file in which to save the key (/home/ユーザ名/.ssh/id_rsa): 空欄でEnter
      >Created directory '/home/ユーザ名/.ssh'. 空欄でEnter
      >Enter passphrase (empty for no passphrase): 空欄でEnter
            >Enter same passphrase again: 空欄でEnter
      
    3. クライアントPCの特定のユーザで下記コマンドを実行してSSH公開鍵を表示、コピーする。

      $ cat ~/.ssh/id_rsa.pub
      >ここに出力された内容を語尾のユーザ名@PC名まで含めて全てコピーする
      
    4. 先にコピーしたクライアントPCのSSH公開鍵をGitサーバPCのauthorized_keysに記載する。

      1. GitサーバPCのgit-userで下記コマンドを実行する。

        $ echo "先にコピーしたクライアントPCのSSH公開鍵" >> ~/.ssh/authorized_keys
        
  4. clone

    1. クライアントPCの特定のユーザで下記コマンドを実行してcloneのテストを行う。

      $ cd
      $ git clone ssh://git-use@GitサーバPCのIPアドレス/home/git-user/remote_repository/test
      >Are you sure you want to continue connecting (yes/no)? yesと入力しEnter
      >warning: You appear to have clone an empty repository.
      
  5. commitとpush

    1. クライアントPCの特定のユーザで下記コマンドを実行してreadme.mdファイルをcommitとpushしてみる。

      $ cd ~/test
      $ git commit --allow-empty -m "First commit"
      $ git push origin master
      

cloneをちょっとだけ楽にしよう

  • cloneを行う時にGitサーバPCのユーザ情報とIPアドレスを打ち込むのは面倒である。
  • SSHのconfigファイルに予めGitサーバPCの情報を記入しておくことでその手間が省ける。
  • 下記にクライアントPCのSSHのconfigファイルに情報を記載する方法をまとめる

    1. クライアントPCの特定のユーザで下記コマンドを実行しSSHのconfigファイルを修正する。

      $ vi ~/.ssh/config
      
    2. 下記の内容を開いたconfigファイルに追記する。(host名がこの設定を呼び出す際の識別子になる、お好みの名前を設定して良い。今回は認識しやすいようにGitサーバPCのユーザ名にした)

      host git-user
          user git-user
          hostname GitサーバPCIPアドレス
          identityfile ~/.ssh/id_rsa
      
      データ名 入力データ
      host ホスト名(任意のものでOK)
      user 接続先PCのユーザ名
      hostname 接続先PCのIPアドレス
      indentityfile SSH接続に使用するSSH鍵までのフルパス
  • SSHのconfigファイルにGitサーバPCの情報が記載されている場合、クライアントPCでcloneするコマンドは下記のようになる。(host名がgit-userの場合)

    $ git clone ssh://git-user/home/git-user/remote_repository/test/.git
    
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ubuntu16.04にGitサーバを立てた話

目的

  • レガシーな環境でもGitによるバージョン管理を行いたくてUbuntuPCにGitのサーバを立てた時の手順をまとめる

今回使用したもの

  • Linux(Ubuntu16.04)のPC2台
  • Linuxマシンにリモートからコマンドを送ることのできるターミナルエミュレータ(tertermなど)が入ったWindowsマシン

皆さんが実施する上で最低限で必要なもの

  • Linux(Ubuntu)PC: 2台
  • Linuxマシンが用意できないけどGitを勉強したい方はこちら

実施条件

  • LinuxPCはOSインストールが完了していること。
  • LinuxPCの管理者権限がある(sudoコマンドが実行できる)こと。

実施方法概要

  1. 準備
  2. リモートリポジトリの作成
  3. SSH鍵作成と登録
  4. clone

実施方法詳細

  1. 準備

    1. 2台あるLinuxPCからGitサーバとして使用するPCとクライアントPCを決める。
    2. git-userユーザの作成

      1. GitサーバPCのsudoコマンドが実行できるユーザで下記コマンドを実行してgit-userというユーザを作成する。
         $ sudo adduser git-user
         >Enter new UNIX password: 任意のgit-userのパスワード入力後Enter
         >Retype new UNIX password: 先に入力した任意のgit-userのパスワード入力後Enter
         >Full Name[]: 空欄でEnter
         >Room Number[]: 空欄でEnter
         >Work Phone[]: 空欄でEnter
         >Home Phone[]: 空欄でEnter
         >Other[]: 空欄でEnter
         >Is the information correct? [Y/n] Yを入力してEnter
      
    3. GitサーバPCのsudoコマンドが実行できるユーザで下記コマンドを実行してgit-userユーザでもsudoコマンドが実行できるようにする。

      $ sudo gpasswd -a git-user sudo
      >Adding user git-user to group sudo
      
    4. GitサーバPCのgit-userユーザで下記コマンドを実行してGitをインストールする。

      $ sudo apt update
      $ sudo apt install git
      $ git --version
      >git version 2.X.X
      
    5. GitサーバPCのgit-userユーザで下記コマンドを実行して認証情報を自動保存するように設定を変更する。

      $ git config --global credential.helper cache
      
    6. GitサーバPCのgit-userユーザで下記コマンドを実行して日本語ファイルでも文字化けしないようにする。

      $ git config --global core.quotepath false
      
    7. GitサーバPCのgit-userユーザで下記コマンドを実行して

    8. GitサーバPCのgit-userユーザで下記コマンドを実行してsshをインストールする。

      $ sudo apt install ssh
      
    9. GitサーバPCのIPアドレス、git-userユーザのパスワードを確認する。

    10. クライアントPCの任意のユーザで下記コマンドを実行してGitをインストールする。

      $ sudo apt update
      $ sudo apt install git
      $ git --version
      >git version 2.X.X
      
    11. クライアントPCの任意のユーザで下記コマンドを実行して認証情報を自動保存するように設定を変更する。

      $ git config --global credential.helper cache
      
    12. クライアントPCの特定のユーザでで下記コマンドを実行して日本語ファイルでも文字化けしないようにする。

      $ git config --global core.quotepath false
      
    13. クライアントPCの特定のユーザでで下記コマンドを実行してユーザとメールアドレスを設定する。

      $ git config --global user.email "任意のメールアドレス"
      $ git config --global user.name "任意のユーザ名"
      
    14. クライアントPCの特定のユーザで下記コマンドを実行してsshをインストールする。

      $ sudo apt install ssh
      
  2. リモートリポジトリの作成

    1. GitサーバPCのgit-userユーザで下記コマンドを実行してリモートリポジトリを格納しておくディレクトリを作成する。

      $ mkdir ~/remote_repository
      
    2. GitサーバPCのgit-userユーザで下記コマンドを実行してtestという名前のリモートリポジトリを作成する。

      $ mkdir -p ~/remote_repository/test
      $ cd ~/remote_repository/test
      $ git init --bare
      >Initalized empty Git repository in /home/git-user/remoterepository/test/.git
      
  3. SSH鍵作成と登録

    1. GitサーバPCのgit-userユーザで下記コマンドを実行してリモート役PCにローカル役PCのSSH鍵を登録しておくファイルを作成する。

      $ mkdir ~/.ssh
      $ touch ~/.ssh/authorized_keys
      
    2. クライアントPCの特定のユーザでで下記コマンドを実行してSSH鍵を発行する。(質問は初回鍵発行なら全て空欄でEnterを押下する。下記の問いは初回時)

      $ ssh-keygen -t rsa
      >Enter file in which to save the key (/home/ユーザ名/.ssh/id_rsa): 空欄でEnter
      >Created directory '/home/ユーザ名/.ssh'. 空欄でEnter
      >Enter passphrase (empty for no passphrase): 空欄でEnter
            >Enter same passphrase again: 空欄でEnter
      
    3. クライアントPCの特定のユーザで下記コマンドを実行してSSH公開鍵を表示、コピーする。

      $ cat ~/.ssh/id_rsa.pub
      >ここに出力された内容を語尾のユーザ名@PC名まで含めて全てコピーする
      
    4. 先にコピーしたクライアントPCのSSH公開鍵をGitサーバPCのauthorized_keysに記載する。

      1. GitサーバPCのgit-userで下記コマンドを実行する。

        $ echo "先にコピーしたクライアントPCのSSH公開鍵" >> ~/.ssh/authorized_keys
        
  4. clone

    1. クライアントPCの特定のユーザで下記コマンドを実行してcloneのテストを行う。

      $ cd
      $ git clone ssh://git-use@GitサーバPCのIPアドレス/home/git-user/remote_repository/test
      >Are you sure you want to continue connecting (yes/no)? yesと入力しEnter
      >warning: You appear to have clone an empty repository.
      
  5. commitとpush

    1. クライアントPCの特定のユーザで下記コマンドを実行してreadme.mdファイルをcommitとpushしてみる。

      $ cd ~/test
      $ git commit --allow-empty -m "First commit"
      $ git push origin master
      

cloneをちょっとだけ楽にしよう

  • cloneを行う時にGitサーバPCのユーザ情報とIPアドレスを打ち込むのは面倒である。
  • SSHのconfigファイルに予めGitサーバPCの情報を記入しておくことでその手間が省ける。
  • 下記にクライアントPCのSSHのconfigファイルに情報を記載する方法をまとめる

    1. クライアントPCの特定のユーザで下記コマンドを実行しSSHのconfigファイルを修正する。

      $ vi ~/.ssh/config
      
    2. 下記の内容を開いたconfigファイルに追記する。(host名がこの設定を呼び出す際の識別子になる、お好みの名前を設定して良い。今回は認識しやすいようにGitサーバPCのユーザ名にした)

      host git-user
          user git-user
          hostname GitサーバPCIPアドレス
          identityfile ~/.ssh/id_rsa
      
      データ名 入力データ
      host ホスト名(任意のものでOK)
      user 接続先PCのユーザ名
      hostname 接続先PCのIPアドレス
      indentityfile SSH接続に使用するSSH鍵までのフルパス
  • SSHのconfigファイルにGitサーバPCの情報が記載されている場合、クライアントPCでcloneするコマンドは下記のようになる。(host名がgit-userの場合)

    $ git clone ssh://git-user/home/git-user/remote_repository/test/.git
    
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ubuntu16.04にGitサーバを立てた話「

目的

  • レガシーな環境でもGitによるバージョン管理を行いたくてUbuntuPCにGitのサーバを立てた時の手順をまとめる

今回使用したもの

  • Linux(Ubuntu16.04)のPC2台
  • Linuxマシンにリモートからコマンドを送ることのできるターミナルエミュレータ(tertermなど)が入ったWindowsマシン

皆さんが実施する上で最低限で必要なもの

  • Linux(Ubuntu)PC: 2台
  • Linuxマシンが用意できないけどGitを勉強したい方はこちら

実施条件

  • LinuxPCはOSインストールが完了していること。
  • LinuxPCの管理者権限がある(sudoコマンドが実行できる)こと。

実施方法概要

  1. 準備
  2. リモートリポジトリの作成
  3. SSH鍵作成と登録
  4. clone

実施方法詳細

  1. 準備

    1. 2台あるLinuxPCからGitサーバとして使用するPCとクライアントPCを決める。
    2. git-userユーザの作成

      1. GitサーバPCのsudoコマンドが実行できるユーザで下記コマンドを実行してgit-userというユーザを作成する。
         $ sudo adduser git-user
         >Enter new UNIX password: 任意のgit-userのパスワード入力後Enter
         >Retype new UNIX password: 先に入力した任意のgit-userのパスワード入力後Enter
         >Full Name[]: 空欄でEnter
         >Room Number[]: 空欄でEnter
         >Work Phone[]: 空欄でEnter
         >Home Phone[]: 空欄でEnter
         >Other[]: 空欄でEnter
         >Is the information correct? [Y/n] Yを入力してEnter
      
    3. GitサーバPCのsudoコマンドが実行できるユーザで下記コマンドを実行してgit-userユーザでもsudoコマンドが実行できるようにする。

      $ sudo gpasswd -a git-user sudo
      >Adding user git-user to group sudo
      
    4. GitサーバPCのgit-userユーザで下記コマンドを実行してGitをインストールする。

      $ sudo apt update
      $ sudo apt install git
      $ git --version
      >git version 2.X.X
      
    5. GitサーバPCのgit-userユーザで下記コマンドを実行して認証情報を自動保存するように設定を変更する。

      $ git config --global credential.helper cache
      
    6. GitサーバPCのgit-userユーザで下記コマンドを実行して日本語ファイルでも文字化けしないようにする。

      $ git config --global core.quotepath false
      
    7. GitサーバPCのgit-userユーザで下記コマンドを実行して

    8. GitサーバPCのgit-userユーザで下記コマンドを実行してsshをインストールする。

      $ sudo apt install ssh
      
    9. GitサーバPCのIPアドレス、git-userユーザのパスワードを確認する。

    10. クライアントPCの任意のユーザで下記コマンドを実行してGitをインストールする。

      $ sudo apt update
      $ sudo apt install git
      $ git --version
      >git version 2.X.X
      
    11. クライアントPCの任意のユーザで下記コマンドを実行して認証情報を自動保存するように設定を変更する。

      $ git config --global credential.helper cache
      
    12. クライアントPCの特定のユーザでで下記コマンドを実行して日本語ファイルでも文字化けしないようにする。

      $ git config --global core.quotepath false
      
    13. クライアントPCの特定のユーザでで下記コマンドを実行してユーザとメールアドレスを設定する。

      $ git config --global user.email "任意のメールアドレス"
      $ git config --global user.name "任意のユーザ名"
      
    14. クライアントPCの特定のユーザで下記コマンドを実行してsshをインストールする。

      $ sudo apt install ssh
      
  2. リモートリポジトリの作成

    1. GitサーバPCのgit-userユーザで下記コマンドを実行してリモートリポジトリを格納しておくディレクトリを作成する。

      $ mkdir ~/remote_repository
      
    2. GitサーバPCのgit-userユーザで下記コマンドを実行してtestという名前のリモートリポジトリを作成する。(外部からのpushを許容するため、共有リポジトリとして使用するために--bareをつけて実行する。)

      $ mkdir -p ~/remote_repository/test
      $ cd ~/remote_repository/test
      $ git init --bare
      >Initalized empty Git repository in /home/git-user/remoterepository/test/.git
      
  3. SSH鍵作成と登録

    1. GitサーバPCのgit-userユーザで下記コマンドを実行してリモート役PCにローカル役PCのSSH鍵を登録しておくファイルを作成する。

      $ mkdir ~/.ssh
      $ touch ~/.ssh/authorized_keys
      
    2. クライアントPCの特定のユーザでで下記コマンドを実行してSSH鍵を発行する。(質問は初回鍵発行なら全て空欄でEnterを押下する。下記の問いは初回時)

      $ ssh-keygen -t rsa
      >Enter file in which to save the key (/home/ユーザ名/.ssh/id_rsa): 空欄でEnter
      >Created directory '/home/ユーザ名/.ssh'. 空欄でEnter
      >Enter passphrase (empty for no passphrase): 空欄でEnter
            >Enter same passphrase again: 空欄でEnter
      
    3. クライアントPCの特定のユーザで下記コマンドを実行してSSH公開鍵を表示、コピーする。

      $ cat ~/.ssh/id_rsa.pub
      >ここに出力された内容を語尾のユーザ名@PC名まで含めて全てコピーする
      
    4. 先にコピーしたクライアントPCのSSH公開鍵をGitサーバPCのauthorized_keysに記載する。

      1. GitサーバPCのgit-userで下記コマンドを実行する。

        $ echo "先にコピーしたクライアントPCのSSH公開鍵" >> ~/.ssh/authorized_keys
        
  4. clone

    1. クライアントPCの特定のユーザで下記コマンドを実行してcloneのテストを行う。

      $ cd
      $ git clone ssh://git-use@GitサーバPCのIPアドレス/home/git-user/remote_repository/test
      >Are you sure you want to continue connecting (yes/no)? yesと入力しEnter
      >warning: You appear to have clone an empty repository.
      
  5. commitとpush

    1. クライアントPCの特定のユーザで下記コマンドを実行してreadme.mdファイルをcommitとpushしてみる。

      $ cd ~/test
      $ git commit --allow-empty -m "First commit"
      $ git push origin master
      

cloneをちょっとだけ楽にしよう

  • cloneを行う時にGitサーバPCのユーザ情報とIPアドレスを打ち込むのは面倒である。
  • SSHのconfigファイルに予めGitサーバPCの情報を記入しておくことでその手間が省ける。
  • 下記にクライアントPCのSSHのconfigファイルに情報を記載する方法をまとめる

    1. クライアントPCの特定のユーザで下記コマンドを実行しSSHのconfigファイルを修正する。

      $ vi ~/.ssh/config
      
    2. 下記の内容を開いたconfigファイルに追記する。(host名がこの設定を呼び出す際の識別子になる、お好みの名前を設定して良い。今回は認識しやすいようにGitサーバPCのユーザ名にした)

      host git-user
          user git-user
          hostname GitサーバPCIPアドレス
          identityfile ~/.ssh/id_rsa
      
      データ名 入力データ
      host ホスト名(任意のものでOK)
      user 接続先PCのユーザ名
      hostname 接続先PCのIPアドレス
      indentityfile SSH接続に使用するSSH鍵までのフルパス
  • SSHのconfigファイルにGitサーバPCの情報が記載されている場合、クライアントPCでcloneするコマンドは下記のようになる。(host名がgit-userの場合)

    $ git clone ssh://git-user/home/git-user/remote_repository/test/.git
    
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

gitの現在ブランチ名を取得(*なしで)

答え

branch_name=$(git describe --contains --all HEAD)

当初の方法

git branch --contains
* master

だから配列で受けて[1]を取ればいけそうな……

echo_branch_name.sh
array=($(git branch --contains))
echo ${array[1]}
$ sh echo_branch_name.sh
api

……あれ?「api」はどこから出てきた?

(しばし考える)

はっ!*が展開されてるー!

echo_branch_name2.sh
array=$(git branch --contains)
branch_name=${array:2} # * を除外
echo $branch_name
$ sh echo_branch_name2.sh
master

できた!

その後、「答え」の方法に気づきました。

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

Gitコマンド実行時に、XcodeとiOSのライセンス同意を求められた場合の解決法

起きたこと

GithubからLaradocのファイルをコピーしようとするエラーが出た。

Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command.

ライセンスに同意してくれと言われる。

解決策

エラーコードにもあるように、sudo xcodebuild -licenseを叩く

$ sudo xcodebuild -license

パスワードを聞かれるので、入力。下記が表示される。

You have not agreed to the Xcode license agreements. You must agree to both license agreements below in order to use Xcode.

Hit the Enter key to view the license agreements at '/Applications/Xcode.app/Contents/Resources/English.lproj/License.rtf'

『Xcodeのライセンス契約に同意していません。 Xcodeを使用するには、以下の両方のライセンス契約に同意する必要があります。 Enterキーを押して、「/ Applications / Xcode.app / Contents / Resources / English.lproj / License.rtf」にあるライセンス契約を表示します』
と書いてあるので、Enter押下。

ライセンス契約がEnter押下で読み進める。全部英語でむちゃくちゃ長い。

By typing 'agree' you are agreeing to the terms of the software license agreements. Type 'print' to print them or anything else to cancel, [agree, print, cancel] 

『「同意する」と入力すると、ソフトウェア使用許諾契約の条項に同意したことになります。 それらを印刷するために「印刷」と入力するか、キャンセルする他の何か、[同意、印刷、キャンセル]』

上記が出たら、agreeを入力し、Enterを押下。

You can view the license agreements in Xcode's About Box, or at /Applications/Xcode.app/Contents/Resources/English.lproj/License.rtf

『ライセンス契約は、Xcodeのバージョン情報ボックス、または/Applications/Xcode.app/Contents/Resources/English.lproj/License.rtfで表示できます。』

再度、Gitコマンドを打ってみると実行できました!

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