そういう、モデルなんです。

ビジネスモデル、設計図、模型などの現状と動向を考察、関連書籍の紹介

Git リモートレポジトリ作成と、ローカルレポジトリとの同期設定

これまでは、ローカル環境に閉じた Git 利用しかしていなかったが、自宅の複数台のパソコンと、職場パソコンに別々に似たようなプロジェクトフォルダと Git レポジトリを次々と作成した結果、さっそく自分の中ですら運用が破綻した w

f:id:tombi-aburage:20190523173219p:plain

それぞれのローカルレポジトリへのUSB wでの相互コピーで運用破綻 orz

世の中的には、リモートレポジトリを正本として先に作成してから、ローカルの開発環境に関連付けるという方法が普通だったらしい。そりゃそうだわ・・・

GitHub でレポジトリ作成

GitHub についてはアカウント作成済みだったが、レポジトリは作っていなかったので作った。レポジトリ名を推奨してくれるのだが、なんだコレ・・・

cautious-computing-machine ? 俺への当てこすりか!

f:id:tombi-aburage:20190511093149p:plain

GitHub が考えた Repository の名前

・・・とりあえず素直に TypeScriptSample で作ることにした。

README と .gitignore の追加は行わず、完全に空っぽのレポジトリを生成した。

ほとんど即座に

https://github.com/ユーザ名/TypeScriptSample.git

で作成されたようだ。と同時に、このレポジトリと同期するローカルレポジトリを作成するための方法等が書かれている Code タブが表示された。

なお現在では、無料アカウントでも private レポジトリをいくつでも作れるようになった。

個人レベルではこれで十分。

Azure DevOps (旧称 VSTS)でもプロジェクトを作成し、レポジトリ同期を試みたが断念

さきほどの本家本元 GitHub レポジトリで用は足りているのだが、VSTS から参照するような形に簡単に設定できるのかどうか興味があったので、試してみた。

VSTS すでに無し

まず Visual Studio Team Services (VSTS)を Microsoft のサイトで探したが、もはやこの名称は過去のものとなっており、今では Azure DevOps というらしかった。

VSTS は Azure DevOps に変わりました!

本家本元 GitHub と Azure DevOps は別物

GitHubMicrosoft に最近買収されたが、GitHub サイトは昔のまま存在している。
アカウントについては、Azure DevOps にログインするさいに GitHub アカウントを連動させることができるようになっている。

連動した GitHub アカウントを使って Azure DevOps にサインインして、TypeScriptSample というプロジェクトを作成した。

f:id:tombi-aburage:20190522230439p:plain

Azure DevOps で新規プロジェクト作成

先ほど作成した Git レポジトリと同名のプロジェクト名にしておけば、自動的にレポジトリがプロジェクトに割り当てられるのかも…と思っていたが、特に自動で割り当てられたりはしなかった。

Git レポジトリへの URL の命名体系も全くの別物

新たに別のレポジトリを作成することは左端の Repos タブから簡単に行えるが、そのさいのレポジトリの名称は

https://ユーザ名/@dev.azure.com/ユーザ名/TypeScriptSample/_git/TypeScriptSample

のようになっており、命名規則は全く違うものとなっていた。

「Clone in VS Code」ボタンなんて飾りですよ

なお「Clone in Vs Code」とかいう便利そうなボタンがあったので、押してみたが、VS Code が自動的に起動しただけで、それ以上、別に何も起きなかった。

何なんだ一体・・・

パスワードの規則が微妙に厳しいのがウザい

レポジトリの自動的な複製 Clone は行われなかったようなので、手動でやるしかなさそうだ。

TypeScript実践マスター

TypeScript実践マスター

 

のとおりに資格情報を作成 Generate Git credentials して VS Code 側からアクセスしにいく方法で進めていくことにした。

しかし資格情報のパスワードの条件が本家本元 GitHub よりも厳しく、大文字・小文字・数字・記号のうち3つ混在要とのこと。

新しく別のパスワードを考えないといけない・・・

考えるのが面倒・・・断念。

さっき GitHub で作ったレポジトリで妥協することにした。

とりあえず先ほど本家本元 GitHub で作成したレポジトリの方を使うことにした。

まだ DevOps 使わないんで

GitHub の画面からローカルレポジトリ作成(無反応)

まだローカル環境(PC環境、VS Code)側にはレポジトリが無いので、正本である GitHub 上のレポジトリの写しを作る必要がある。

f:id:tombi-aburage:20190511175136p:plain

Quick setup - Set up in Desktop

そこで GitHub の画面上にあった「Setup in Desktop 」ボタンを押してみた。
・・・またしても何も起きなかった。

またか。何なんだ一体!?

レポジトリの自動的な構築 Set up とやらは行われなかったようなので手動でやる。

TypeScript実践マスター

TypeScript実践マスター

 

のとおりに VS Code 側からアクセスしにいく方法で進めていくことにした。

  • まず VS Code で適当なプロジェクト(ワークスペース)をローカルに作成。
  • その後、コマンドパレット View - Command Palette から Git : Clone

GitHub へのログイン画面ダイアログが表示された後、VS Code の画面上は特に目立った反応もなく終了した。

一応、指定したローカルディスクのフォルダ配下に新しい .git フォルダが作成されていたので、多分、これで成功したのだろう。

ローカルレポジトリからリモートレポジトリへの反映

VS Code で適当にテスト用のテキストファイルを作成し、まずローカルレポジトリにコミット。その後、VS Code の画面左下にある、きわめて見づらいクラウドへのアップロードボタンを押した。

f:id:tombi-aburage:20190511180615p:plain

リモートレポジトリへ反映するボタン(?)

定期的にリモートレポジトリを参照する設定にするかを訊かれたが、利用者は自分だけなので、いいえ No とした。このタイミングで聞いてくるのは何故だろうと思いつつ。

f:id:tombi-aburage:20190511180725p:plain

定期的に git fetch するか訊かれたが、いいえ No

Git Hub の Code タブの表示がガラリと変わり、このレポジトリと同期するローカルレポジトリを作成するための方法等は最早表示されなくなった。かわりに同期されたファイル名が表示されている。

うまくいったようだ。

なお作成方法を見たい場合は下記のように、空のレポジトリを適当に作ればよい。

GitHub でのレポジトリ作成時には、完全に空っぽで作成するのが吉

さきほど成功した例では、GitHub のレポジトリに README、.gitignore は自動生成させていなかった。しかし README はともかくとして .gitignore は必ず使っているので、自動生成させるパターンでやってみることにした。

そしたら見事にハマった。

GitHub のレポジトリ作成画面において、一番下にある Add .gitignore を選ぶと 使用言語に適した .gitignore ファイルが自動追加される。

この .gitignore 自体は、それなりに気が利いている内容のファイルなのだが、

  1. ファイルを生成したためにレポジトリが空ではなくなり、接続手順ページが表示されなくなる
  2. この後に行う VS Code との同期設定が激しく難航する

などの副作用があった。このうち1つめについては

  • いつでも接続・設定方法を参照できるように empty というプロジェクトを作成し、接続手順ページをいつでも参照できるようにする

ことで恒久対処したが、2つめについては実力不足で解決できなかった。

tombi-aburage.hatenablog.jp

とりあえず、レポジトリ作成時には、いかなるファイルも生成しないことに決めた。

空の GitHub リモートレポジトリ作成より前に、ローカルレポジトリを作っている場合

リモートレポジトリ GitHub を作成後、

…or push an existing repository from the command line

に記載のコマンドのとおり連携させるだけだった。とても簡単。

GitHub リモートレポジトリはあるが、ローカルレポジトリは全くない場合

  • コマンドパレット View - Command Palette から Git : Clone
  • プロジェクト(およびレポジトリ)の親となるべきフォルダを選択
    複製 Clone 時に GitHub レポジトリと同名のフォルダが自動的に作成されるので、プロジェクト(レポジトリ)フォルダは事前に用意しないように。

 プロキシ経由の場合は追加の設定が必要となる

自宅ではプロキシ無しだったため、すんなりインターネット上の GitHub に接続できた。しかし職場ではプロキシ有りなので、最初はうまく接続できず、結局のところ追加設定をする必要があった。

sushichop.blogspot.com

を参考にして、プロキシ環境設定を行った。 

tombi-aburage.hatenablog.jp

の場合と同様に、

  • auth.pacファイルを解析してプロキシの実アドレスを特定
  • プロキシ用のユーザ名/パスワードを含めたURLを git config コマンドで登録
git config --global http.proxy ~
git config --global https.proxy ~

する必要があった。

ローカルPC環境の VS Code から GitHub レポジトリとの同期をかける

プロキシには認証の設定がされているため、都度都度、認証が要求されている。

画面入力は勘弁して・・・
  1. まず GitHub へのログイン画面で、GitHub 用のユーザ名/パスワードを入力させられ、

    f:id:tombi-aburage:20190514173443p:plain

    GitHub Login


  2. そののち、VS Code のコマンドパレット?でも、GitHub 用のユーザを入力させられ、

    f:id:tombi-aburage:20190514173516p:plain

    VS Code でも Username を入力


  3. そののち、GitHub 用のユーザ名/パスワードを入力させられた。

    f:id:tombi-aburage:20190514173622p:plain

    VS Code でも Password を入力

認証がくどいが、とりあえずリモート側との同期には成功したので、良しとする。

特に問題なし

パスワード保存

面倒くさいので、認証情報を保存することにした。

git config --global credential.helper store

しかし、何の応答もなく完了した。

D:\Users\tombi\AppData\Local\Programs\Git\mingw64\etc\gitconfig

をみても、パスワードが保存されている様子はなかった。

C:\Users\tombi\.gitconfig、C:\Users\tombi\.git-credentials

をみたところ、.git-credentials にハッシュされたパスワードのようなものが保存されている様子だった。

Windows 資格情報の管理 の画面を見ると、更新日時:今日となっていたので、多分反映されているのだろう。

f:id:tombi-aburage:20190525083921p:plain

Windows 資格情報の管理
問題なし