Gitリポジトリ新規作成

毎回Gitリポジトリを新規作成するときに調べるのがめんどくさいのでメモしておきます。GitUubじゃなくて、自宅のSSHサーバにリモートリポジトリを作成します。

リモートリポジトリのSSHサーバのホスト名は「rem-sv」、OSは Ubuntu 20.04、ローカル環境はWSL2のUbuntu 22.04です。

SSHの設定

最初の1回だけSSHの設定をします。次回以降リポジトリ作成するときは不要です。

SSH鍵作成

SSH鍵がなければ作成します。ローカル環境で作ります。作成済みならスキップしてください。

local$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mtystg/.ssh/id_rsa): (そのままEnter)
Enter passphrase (empty for no passphrase): (そのままEnter)
Enter same passphrase again: (そのままEnter)
Your identification has been saved in /home/mtystg/.ssh/id_rsa
Your public key has been saved in /home/mtystg/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:tZxL2A2YZPrKwGsDJI06v1z2Omq1OjRRZkzjAAkUiVE mtystg@local
The key's randomart image is:
+---[RSA 3072]----+
|BBEoo   o        |
|o+ o=. + o       |
|o o+. . o o      |
|.o..   . = =     |
|o ..o   S * .    |
| oo..+ . . .     |
| ..o*.o   .      |
| .o=oo           |
| .=+.o.          |
+----[SHA256]-----+
lcoal$

公開鍵をSSHサーバに転送

local$ scp ~/.ssh/id_rsa.pub rem-sv:

コピペで転送する場合は id_rsa.pub を cat してコピーしておきます。

local$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7UaB1ttaVfgg6ABhBT6yv5BikT7TDLmMPHMYAiKx2AsrHd5uWZUNC32DRPZE6c4R3EUsExczREa8l1Ee0dQNZChuJDMrMDMS54+irPuxlMxP3fxRM0pWl6WnwlM/YTDZmpfms110sVpndGIMgC77DeBE+fWJcpw/bfop8TTe8IGgj1m0abJSdQON5VEJDlu/xCXNLJyVkbc4UpcRlLBXeeQHqgDwsDvaCNk+ZbS1/BMjo7AkRBFx7KZPH2R7LZN5fzgSakc8O1uS/CD5V90jAgEjpP6s6lAChwVZ4R1jf5m2ohJZ5FZlXSQs3UirtX3+agkyKHwCQQ6kmi1Y3dznJ mtystg@local

公開鍵をauthorized_keysに追加

SSHサーバの authorized_keys に公開鍵を追加します。パーミッションに気を付けてください。

rem-sv$ mkdir -m 700 ~/.ssh
rem-sv$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rem-sv$ chmod 600 ~/.ssh/authorized_keys

コピペの場合はこう。

rem-sv$ mkdir -m 700 ~/.ssh
rem-sv$ cat >> ~/.ssh/authorized_keys
(ペーストして改行してからCtrl+D)
rem-sv$ chmod 600 ~/.ssh/authorized_keys

SSHアクセスの確認

アクセスできるか確認します。パスワードなしの鍵を作成していますので、パスワードのプロンプトは出てきません。

local$ ssh rem-sv ls
git_repos  tmp

ローカル環境に空のリポジトリ作成

作業環境となるローカル環境に空のリポジトリを作成します。

local$ mkdir ccj
local$ cd ccj
local$ git init
Initialized empty Git repository in /home/mtystg/ccj/.git/
local$ git commit --allow-empty -m "init"

リモートリポジトリ作成

リモートリポジトリはローカルと同じアカウントの ~/git_repos/ 下に作成します。Gitの通例にならい、origin は「.git」サフィックスを付けたディレクトリとします。

注意しないといけないのが「–bare」オプションです。つけないと ccj.git/.git/ にリポジトリの管理ファイル群が作成されてしまいます。

rem-sv$ git init --bare ~/git_repos/ccj.git
Initialized empty Git repository in /home/mtystg/git_repos/ccj.git/

ローカル環境をリモートリポジトリに関連付けます。こちらも慣例に倣い「origin」という名前にします。

local$ git remote add origin remo-sv:git_repos/ccj.git
local$ git remote -v
origin  remo-sv:git_repos/ccj.git (fetch)
origin  remo-sv:git_repos/ccj.git (push)

では、push してみましょう。upstrerm が設定されていないとエラーになりますので、–set-upstream でリモートリポジトリ origin の master ブランチを設定して push します。

local$ git push --set-upstream origin master
Enumerating objects: 2, done.
Counting objects: 100% (2/2), done.
Writing objects: 100% (2/2), 159 bytes | 79.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To mit-sv:git_repos/ccj.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

.gitignore の設置

WordPress 環境なので、WordPress の zip を展開して、wordpress ディレクトリ下に、GitHub の .gitignore collection から WordPress 用のテンプレートを取得します。

local$ unzip wordpress-6.0.2-ja.zip
local$ cd wordpress
local$ wget https://raw.githubusercontent.com/github/gitignore/main/WordPress.gitignore
local$ mv WordPress.gitignore .gitignore
local$ cd ..

不要なファイルがコミットされないか確認します。

local$ git add --dry-run .

プラグインがコミット対象になっていたので、wordpress/.gitignore の以下の行のコメントを外します。

# All plugins
#
# Note: If you wish to whitelist plugins,
# uncomment the next line
/wp-content/plugins

emacs で作成される xxx~ というバックアップファイルと WordPress の Zipファイルも対象になっていたので、.gitignore に追加します。この設定は全ディレクトリで共通なので、wordpress/.gitignore でなく、トップディレクトリの .gitignore に記載します。

# WordPress zip file
wordpress*.zip
# backup file
*~

もう一度確認します。

local$ git add --dry-run .

add '.gitignore'
add 'wordpress/.gitignore'

それでは add して commit して push します。

local$ git add .
local$ git status
ブランチ master
Your branch is up to date with 'origin/master'.

コミット予定の変更点:
  (use "git restore --staged <file>..." to unstage)
        new file:   .gitignore
        new file:   callcenter-japan.com/.gitignore

local$ git commit -m "Add .gitignore files."
[master 69b6629] Add .gitignore files.
 2 files changed, 52 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 wordpress/.gitignore

local$  git push
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (5/5), 753 bytes | 150.00 KiB/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To mit-sv:git_repos/ccj.git
   b5a2323..69b6629  master -> master

あとはコードを書いて、じゃんじゃんコミットすればできあがり。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です