20200817のGitに関する記事は2件です。

githubの初期設定

内容

  • macでgithubを使うための初期設定

目的

  • 忘れないようにメモ
  • アウトプットすることで頭の整理
  • 間違ってる箇所もあるかもしれないので都度編集します

gitとgithubとは

  • gitとは

     「分散バージョン管理システム」のこと。
     チームで開発等をするときに、複数人が同じファイルを同時に変更した場合コンフリクトが起きる。
     じゃあ各々が編集したいファイルをコピーして編集、その後それぞれの変更点だけ元のファイルに反映出来たら最高じゃん、的なことが出来る管理ツール。

     リモートリポジトリ(上でいうところの元ファイルのありか)と、ローカルディレクトリ(上でいうところの各々でコピーしてきたところ)で管理する。
     リモートリポジトリが本物でローカルリポジトリがコピーみたいなイメージ。

  • githubとは

     gitの使用を支援するよというサービス。
     リモートリポジトリをクラウド上に作成できるので、遠く離れていても管理が可能。
     他にもいろいろあるが割愛。

1.macにgitをインストール

#ユーザー名、メールアドレスは自由に
git config --global user.name "ユーザー名"
git config --global user.email "メールアドレス"

2.githubでリポジトリ作成(リモートリポジトリ)

新規でリポジトリを作成する。
これが「リモートリポジトリ」になる。

3.ローカルリポジトリの作成

まずはgitで管理するディレクトリの作成。
これが「ローカルリポジトリ」になる。

#ここでは試しに「test」というディレクトリを作成
mkdir test
#作成後そのディレクトリに移動しておく
cd test

作成したフォルダをgitで管理できるようにする
要するにローカルリポジトリにする。

#下記のコマンドで現在のディレクトリをgitで管理できるようにする
git init
#下記コマンドで、先ほど作成したリモートリポジトリと紐づける事で
#ローカルリポジトリとなる
#このコマンドはプッシュ先のリモートを指定するコマンド
#<URL>には、githubで作成したリポジトリのURLを指定
git remote add origin <URL>

4.リモートにプッシュしてみる

まずはローカルになんでも良いのでファイルを作成し、それをpushしてみる。
ファイルを作成するのは3で作成したディレクトリ内。

#sample.txtの作成
touch sample.txt
#以下コマンドを実行すると上で作成したファイル(ex:sample.txt)が赤文字で表示される
#編集したファイルをaddする
git add sample.txt
#ちゃんとaddできたか確認(今度は赤じゃなくて緑色に変わってます)
git status
#確認できたらcommitします
git commit -m "first push"
#今回はとりあえずそのままpush
git push origin master

githubのページを確認し、sample.txtが表示されていれば成功。

補足

addcommitpushとか出てきたけど一体何をしているのか?

  • add
     gitの性質上、ローカルリポジトリで編集しただけで終わりではなくそれをリモートリポジトリに共有しなくては意味がない。
     という事で、まずはどのファイルをローカルに共有するかを決めなくてはならない。
     git add <ファイル名>とする事で、そのファイルを共有しますよーとりあえず宣言します。
     (正確にはインデックスに登録)

  • commit
     コミットすることで、前回の更新からどんな変更があったか等の情報を記録することが出来る。
     不具合が起きたときにこのログが役に立つ(らしい)。
     -m "<コメント>" でどんな修正を行ったか一言加えておくのが普通。

  • push

     最後に登録したファイルを実際にリモートに反映するのがpush。
     git push origin <ブランチ名>
     今回はmasterに直接pushしたが実際masterにpushはあまりしない。(個人開発ならするのか?)
     ブランチについては別の記事で記載予定。

補足2

2台以上で同じリモートを設定したい場合、2台目の設定がよく分からず少しつまずいたのでメモ。
結果的には至極単純。

git clone <リモートリポジトリのURL>

これだけ。笑
無知って怖い。。。

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

GitのGPG署名付きcommitとGitHubの連携で躓いた話

あんた誰?

Nanai10a(なないじゅあ)と申します。
この世の最底辺の技能知識0/注意散漫erです。

この記事は何?

今回はGitでGPG署名付きcommitをしてGitHubに上げていたら、いつのまにかUnverifiedになっていたお話をしていこうと思います。

環境

今回やっていく環境の詳細は以下の通りです。

OS : Windows 10 Home Edition

Prologue

私は今年の6月頃から本格的にGit, GitHubを使うようになりました。
ちょうどその使い始めの時にGPG署名についてやGitの署名付きcommitについて聞いたり調べたり教わったりと、ちょっとだけかじっていました。
それで特に問題はなくGitの署名付きcommitでGitHubにVerifiedのバッヂをつけることに成功し、平穏に過ごしていました。

しかし最近になってUnverifiedの文字が…あれ?
私、設定したよな?

その時何をしていたか

実はその時、あるbranchのcommit群を別branchに移したくて、

git checkout #[移行先branch]
git cherry-pick #[commit]

git checkout #[移行元branch]
git reset HEAD~#[移行commit数]

なんて操作を行っていたんですね。
※branch管理はしっかりしましょうね!(自戒)

んで移行後のbranchのcommitがしっかり反映されてるかなと、GitHubにpushしまして…さてGitHubを開きますと、

Unverified

…あれ???

いいえ、目的自体は達成したのです。目的のcommitは私の思惑通り移行が完了していたのです。
しかし…Unverified…???

私は前に署名付きcommitの準備をして、成功したはずです。
なんだこれ。

調べてみると作業をしていた他のRepositoryの私のcommitもみんなUnverified…あれれれれれ?????
何がどうしたというのだ。

どうにかしようと闇雲に…

その時何故か私は
「きっとこのcherry-pickでしっかり署名ができていないのかも知れない、署名し直してみよう」と思い立ちまして。
臨時の別ブランチにcommitを移し、再びcherry-pick、加えて1commitづつ、

git commit --amend -S

と明示的に署名を行いました。
まぁもちろん治るはずもなく。

というか最初からcherry-pickした時にGPGのパスフレーズを入力していたではありませんか。

まぁこんな事を繰り返して。
次はメールアドレスを疑ったわけです。

・GitHubに紐付けてあるアドレス
・GPG鍵に使われているアドレス
を確認しました。

…うん。同じものが紐付けられているな。

じゃあ鍵が間違っている?

再度GPG鍵をexportしてGitHubに貼り付けてみる。

Key already exists and Public key already exists

…うん。だって登録しましたから。そりゃそうでしょう。

…あれ、本当になんで???

help me...

署名付きcommitに関することを調べ直しまして、同じ鍵で再度Gitに設定し直したりしました。
が、治らず。

「こりゃ駄目だな」と愚痴のように私はTwitterにtweetをし、怠けていました。

しかしその数十秒後…

Discord某鯖にて…

https://twitter.com/771tenNext/status/1295271710195761154?s=20
image.png
何だろうなと思ってみたらこれだったので、
Gitに設定されてるメールアドレスとGPG鍵に登録してあるメールアドレスが違うみたい

― φ

おっと?(φ氏については後ほど)

解決へ

という訳で

git config --global user.email
#[GPG鍵のものとは違うアドレス]

※[GPG鍵のものとは違うアドレス]はGitHubには紐付けてありますが
ふぅ~~~~~!!!!!(自分への憤りの音)

git config --global user.email #[GPG鍵のものと同じアドレス]

さて運命の瞬間。

git commit --amend
git push -f

commit.gpgsigntrueにしてあります

Verified

はい!!!!!!!

解 決 ! ! ! ! !

余談

これなんで起きたのかはわかっていません…が、それに関わりそうな操作について一応

・GitHubアカウントに紐づけていたプライマリメールアドレスを変更していた
・そのメールアドレスを使ってIntelliJ IDEA CommunityやEclipse上でGitHubにログインする機会があった

もしかして…と思い書き残しますが、どっちにせよこちらの過失なのでなんとも…。
自分でGitのuser.emailを変更していた可能性も大いにあります…。

まとめ

・Gitの署名付きコミットはGitと鍵に紐付けたメールアドレスが同じでないと駄目。

これに尽きる。
以上。

φ氏について

名前はloxygenという方です。のだのだ言ってます。(「φ」はニックネームなので…)
(なんかニックネームをminimal化する風潮があるのでこうなっている、ちなみに私は「.」)
某鯖で色々とやっているお方です。(最近はBot開発に明け暮れていたかな)
ちょくちょく助けれられていて頭が上がりません…。
覗きに行ってあげて下さい。

HP : https://loxygen.dev/
Twitter本垢 : @loxygenk
GitHub : loxygenK

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