想定読者層: 初学者や久しぶりに触る人
あまり情報が無かったのでメモしたものを共有します。
執筆時の環境
- Windows10
- Gitのバージョン: 2.50.0.2
- Obsidianのバージョン: 1.8.10
- Gitに触るのは数年ぶり
使いそうなショートカットキー
Git bashのコピー:CTRL
+INSERT
Git bashのペースト:SHIFT
+INSERT
Obsidianのセットアップ
Obsidian公式からインストーラーをダウンロード。
セットアップについては、本体をDドライブに保存したいといったことが無ければ、全てデフォルトのままで問題ない。
起動したら以下のような画面が出てくる。
Vault=データの保管場所のこと。
左上にある『private-vault D:\Github』は私が既に作ったVaultが表示されているだけで、初回起動時は表示されない。
Open folder as vault
はパソコン買い換えたときとかに使う。
Open vault from Obsidian Sync
は月額4$で他の端末と同期させる公式の機能を使う人向け。
Obsidian本体は日本語に対応しているので、お好みでEnglish
から日本語
に変更する。
※後述するが、コミュニティプラグインは対応していないものが多い。
Create new vault
→ Create
でVaultを作成する。
保管庫の名称は好きなもので構わない。
※直接PC内のディレクトリ名になるので/(スラッシュ)などは使えない。
ロケーションも好きな場所で構わないが、後にパスが必要になるのでメモしておく。
噂によるとクラウドにも保存できるらしいです。OneDrive等のクラウドに保存する方法は他の人の解説を参考にしてください。
Githubの準備
Githubのアカウントの用意をする。
専用のリポジトリも作成する。
Githubのリポジトリ作成を詳しく解説した記事は無数に存在するので、ここでは画像は省略する。
Your Repositories
→ New
Repository name: 好きな名前を入力()
Obsidianの内容を全世界に公開したくない場合はPrivateを選択。
他はデフォルトのままで問題ない。
Gitのセットアップ
Gitの公式サイトからGitをインストール。
変える必要がある項目だけ解説する。
説明を載せていない項目はデフォルトのままNext
で問題ない。
画面下部にあるOnly show new options
にデフォルトで入っている✓を外す。
Adjusting the name of the initial branch in new repositories
でOverride the default branch name for new repositories
にチェックを入れ、『main』と入力されていることを確認する。
これをやらないとブランチ名がmasterになり、Githubのデフォルトブランチ名mainと整合しなくなる。
Choosing HTTPS transport backend
でUse the OpenSSL library
を選択
デフォルトではUse the native Windows Secure Channel library
が選択されているが、Use the OpenSSL library
を推奨している記事が多い。
Git, Githubの設定
ユーザ名とメールアドレスの設定
"username"
と"useremail@email.com"
は自分のものを入力してください。
一致していないと別の人がコミットしている扱いになるので、Githubに登録したものと同じだと望ましいです。
git config --global user.name "username"
git config --global user.email "useremail@email.com"
既に鍵が無いか確認
ls ~/.ssh/
以下のようなメッセージが表示されたらそのまま進む。
既にid_ed25519がある場合は鍵生成を飛ばして専用に別名の鍵を作成したりして対応する。
パスは環境によって変わります。
ls ~/.ssh/
ls: cannot access `/c/Users/Owner/.ssh`: No such file or directory
known_hosts
, known_hosts.old
等が表示されても、id_ed25519は存在しなければ基本的には問題ない。
ls ~/.ssh/
known_hosts
鍵生成
今回は初学者向けにデフォルト名で生成する。鍵の名前を変えたい場合は一番下にある補足を参照。
最近はed25519方式が主流らしい。数年前の環境構築解説記事はRSAを使っているものが多い。
"useremail@email.com"
は必ずGithubに登録したメールアドレスを入力する。
ssh-keygen -t ed25519 -N "" -C "useremail@email.com"
パスフレーズを設定してしまうとObsidianのプラグインのGitが上手く動作しなくなるので、オプションに-N ""
を設定している。
パスフレーズの設定を求められる画面で何も入力せずにEnterを押すという方法もある。
オプション | 意味 | 説明 | 例 |
---|---|---|---|
-t |
暗号化方式 | 生成する鍵のアルゴリズムを指定(ed25519, rsa など) | -t ed25519 |
-b |
鍵長 | RSAなどでのビット長 (ed25519は255bit固定なので不要) |
-b 4096 |
-C |
コメント | 公開鍵に付加されるコメント(メールアドレス) | -C "user@email.com" |
-f |
ファイル名 | 出力先のファイル名を指定 | -f ~/.ssh/id_ed25519 |
-N |
パスフレーズ | パスフレーズを指定(空欄は -N "" ) |
-N "pass" / -N ""
|
確認
ls ~/.ssh/
# 以下が表示されたら成功
id_ed25519 id_ed25519.pub
鍵のコピー
cat ~/.ssh/id_ed25519.pub
を実行して表示される文字列をCTRL
+INSERT
でコピーする。
Windowsの場合、clip
コマンドで直接クリップボードにコピーできる。
# クリップボードに直接コピーされる
clip < ~/.ssh/id_ed25519.pub
GithubアカウントへSSHキーを追加
Settings
→ SSH and GPG keys
Titleは任意のタイトル
Keyにコピーした文字列をペーストする。
Githubに接続する。
ssh -T git@github.com
以下のメッセージが出てきた場合は、手打ちでyes
と入力してEnter押下。
ssh -T git@github.com
The authenticity of host 'github.com (xx.xx.xxx.xx)' can't be established.
AA11111 key fingerprint is SHA256:hogehogehogehoge...
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
成功すると以下のようなメッセージが表示される。
ssh -T git@github.com
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
gitリポジトリを作成
まずobsidianのVaultを置いてあるディレクトリに移動。
""内にObsidian初回起動時に作成したVault(保管庫)のパスを入力する。
私の場合はD:\github
フォルダの中にprivate-vault
という名前のVaultを作成したので以下の通りになる。
cd "D:\github\private-vault"
git init
を実行し、作成したObsidianのVaultのフォルダ内に.git
を作成する。
git init
できたか確認
git status
いろいろ表示されるかもしれないが、On branch main
と表示されれば基本的に問題ない。
コミットするファイルを選択
初回の場合は、オプションに.(ワイルドカード)
をつけて全選択したりするが、場合によっては後にエラーを起こすので注意。
git add .
ローカルにコミット
git commit -m "first commit"
リモートリポジトリ(Github)にPush
Push先のリモートリポジトリを指定
# URL部分はGithubからコピーしてくる
git remote add origin git@github.com:username/repository-name.git
リポジトリへのリモート接続の一覧を表示して、上手くいったかどうか確認。
-vはURLも表示するオプション。
git remote -v
以下のように表示されたら成功。
git remote -v
origin git@github.com:username/repository-name.git(fetch)
origin git@github.com:username/repository-name.git(push)
リモートリポジトリにPush
-u
は無くても問題無いですが、つけた方がいいらしいです。
git push -u origin main
Commit、PushまでしなくてもObsidian側のGitは動作するかもしれないです(未検証)
Obsidian側での設定(プラグインの有効化)
画面右下の歯車マーク → オプション/コミュニティプラグイン → 閲覧
左上の検索ボックスにGitと入力して検索。
Gitをクリックし、インストール。
×を押してコミュニティプラグインの検索窓を閉じ、設定画面に戻る。
コミュニティプラグインの項目内にGitが追加されているので、有効化する。
すると、歯車マーク(Settings) → コミュニティプラグインにGitが追加される。
Commit authorの設定(ここを設定しないとエラーになる可能性有)
下の方にあるCommit authorを見つけ、
Author name for commitにGit・Githubのユーザーネーム
Author email for commitにGit・Githubに登録したメールアドレスを打ち込む。
左上のリボンにOpen Git source control
が追加されている。
クリックすると以下のような画面が出てくるので、ここでCommitやPushを行う。
だいたい一番左のCommit-and-sync
を押しておけばいい。
以上で動作する筈です。
補足
SSH鍵の名前を分けたい(デフォルトから変更する)場合
~/.ssh/configを編集しないと接続しない。
鍵の名前を使い分けたい場合(例えばgithub用の鍵を作りたい場合)
ls ~/.ssh/github
github github.pub
configファイルがあるか確認
ls -l ~/.ssh/config
そもそもconfigが無い場合
空ファイル作成
touch ~/.ssh/config
編集(エディタはお好きなもので)
nano ~/.ssh/config
又は
vi ~/.ssh/config
以下の内容を記載する
IdentityFileは作成した鍵の名前(今回はgithub)
Host github.com
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/github
IdentitiesOnly yes
644だと読み込まないことがあるらしいのでパーミッションを設定
ただし、Windowsだと反映されないことがよくある。
chmod 600 ~/.ssh/config
エラーその1
ブランチ名がmainではなくmasterになっている場合
Githubのブランチ名がmainなので、ローカルのブランチ名がデフォルトのmasterのままだったりすると整合性が取れずにエラーが発生する。
git push -u origin main
error: src refspec main does not match any
error: failed to push some refs to 'github.com:username/repository-name.git'
master → mainに変更することで解決できる
以下は一例
git branch -m main
リモートリポジトリ作成時にREADME
や.gitignore
を作成してしまい、初回コミット時に競合してしまった場合。
以下のエラーが表示される
$ git push origin main
Enter passphrase for key '/c/Users/Owner/.ssh/id_ed25519':
To github.com:username/repository-name.git
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'github.com:username/repository-name.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
クローンしてプルする
git clone https://github.com/username/repository-name.git
git pull origin main
公式ドキュメント
Obsidian. "Obsidian Developer Docs". https://docs.obsidian.md/Home
Git. "Git - Documentetion". https://git-scm.com/doc
Github Enterprise Cloud docs. "SSH を使用した GitHub への接続". https://docs.github.com/ja/enterprise-cloud@latest/authentication/connecting-to-github-with-ssh
"OpenSSH Manual Pages". https://www.openssh.com/manual.html
参考文献
※一部ChatGPTの情報も導線として参考
Progate. "【Windows】Gitの環境構築をしよう!". https://prog-8.com/docs/git-env-win
stack overflow. "chmod で パーミッション の変更が出来ない". https://ja.stackoverflow.com/questions/44239/
二色人日記. "【git】git pushする時にオプション「-u」をつけた方がいい理由". https://twotone.me/web/5933/
@yampy. "[備忘] 複数Githubアカウントでssh接続設定(config)を使い分ける手順". Qiita. https://qiita.com/yampy/items/24638156abd383e08758
@shungo_m. "【git】ブランチ名の変更方法(ローカル、リモート)". Qiita. https://qiita.com/fk_chang/items/a4839a595fef9a2c3724
Publickcey. "GitHub、これから作成するリポジトリのデフォルトブランチ名が「main」に。「master」から「main」へ変更". https://www.publickey1.jp/blog/20/githubmainmastermain.html