Notebook

これは日々の作業を通して学んだことや毎日の生活で気づいたことをを記録しておく備忘録である。

HTML ファイル生成日時: 2024/12/23 15:49:04.419 (台灣標準時)

git の server を作る方法について

以下は、 git の server を準備し、使えるようにする記録でござる。

まず、 git というアカウントを作るでござる。


% su -m -
# useradd -m -u 12345 -g 12345 git

git アカウントに切り替えるでござる。


# su -l git
% whoami
git
% pwd
/home/git

ホームディレクトリーに .ssh というディレクトリーを作り、 そこに空の authorized_keys というファイルを作っておくでご ざる。


% mkdir .ssh
% chmod go-rx .ssh
% cd .ssh
% touch authorized_keys
% ls -lF
total 0
-rw-r--r--  1 git  taiwan  0 Nov 15 10:21 authorized_keys
% chmod go-r authorized_keys
% ls -lF
total 0
-rw-------  1 git  taiwan  0 Nov 15 10:21 authorized_keys

利用したいアカウントが接続できるように、公開鍵を authorized_keys に追加するでござる。


% cat /somewhere/in/the/disk/id_ed25519.pub >> authorized_keys
% ls -lF authorized_keys 
-rw-------  1 git  taiwan  96 Nov 15 10:25 authorized_keys

リポジトリーのためのディレクトリーを作るでござる。


% cd
% pwd
/home/git
% mkdir test_repository
% ls -lF
total 16
drwxr-xr-x  2 git  taiwan  512 Nov 15 10:33 test_repository/
% cd test_repository
% pwd
/home/git/test_repository
% ls -alF
total 32
drwxr-xr-x  2 git  taiwan  512 Nov 15 10:33 ./
drwxr-xr-x  4 git  taiwan  512 Nov 15 10:33 ../

新しい空のリポジトリーを作成するでござる。ここでは、 test_repository という名前のリポジトリーを作成してみるで ござる。


% pwd
/home/git/test_repository
% git init --bare
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint:       git config --global init.defaultBranch 
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint:       git branch -m 
Initialized empty Git repository in /home/git/test_repository/
% ls -alF
total 144
drwxr-xr-x  6 git  taiwan  512 Nov 15 10:35 ./
drwxr-xr-x  4 git  taiwan  512 Nov 15 10:33 ../
-rw-r--r--  1 git  taiwan   23 Nov 15 10:34 HEAD
-rw-r--r--  1 git  taiwan   66 Nov 15 10:34 config
-rw-r--r--  1 git  taiwan   73 Nov 15 10:34 description
drwxr-xr-x  2 git  taiwan  512 Nov 15 10:34 hooks/
drwxr-xr-x  2 git  taiwan  512 Nov 15 10:34 info/
drwxr-xr-x  4 git  taiwan  512 Nov 15 10:34 objects/
drwxr-xr-x  4 git  taiwan  512 Nov 15 10:34 refs/

これで、 server 側の準備はできたようでござる。このあとは、別の計算機上 で作業をするでござる。 server ではない別の計算機で test_repository のためのファイルを作り、それを commit し てみるでござる。また、 git server は abc.astro.ncu.edu.tw とし、 git server で動いている ssh server は port 54321 で通信している とするでござる。


% mkdir test_repository
% cd test_repository
% git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint:   git config --global init.defaultBranch 
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint:   git branch -m 
Initialized empty Git repository in /home/daisuke/test_repository/.git/
% echo "# test_repository" > README.md
% git status
On branch master

No commits yet

Untracked files:
  (use "git add ..." to include in what will be committed)
        README.md

nothing added to commit but untracked files present (use "git add" to track)
% git add README.md
% git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached ..." to unstage)
        new file:   README.md

% git commit -m "creating README.md"
[master (root-commit) 4ef5324] creating README.md
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
% git remote add mygit ssh://git@abc.astro.ncu.edu.tw:54321/home/git/test_repository
% git push mygit master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 243 bytes | 48.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To ssh://abc.astro.ncu.edu.tw:54321/home/git/test_repository
 * [new branch]      master -> master

もう一つ、ファイルを追加してみるでござる。


% emacs hello.py
% cat hello.py
#!/usr/pkg/bin/python3.10

# Time-stamp: <2023/11/15 11:02:55 (Taiwan_Standard_Time_UT+8) daisuke>

# printing a sentence "Hello, world!"
print (f'Hello, world!')
% git status
On branch master
Untracked files:
  (use "git add ..." to include in what will be committed)
        hello.py

nothing added to commit but untracked files present (use "git add" to track)
% git add hello.py
% git status
On branch master
Changes to be committed:
  (use "git restore --staged ..." to unstage)
        new file:   hello.py

% git commit -m "adding hello.py"
[master f10ea7b] adding hello.py
 1 file changed, 6 insertions(+)
 create mode 100755 hello.py
% git push mygit master
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 6 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 423 bytes | 423.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To ssh://abc.astro.ncu.edu.tw:54321/home/git/test_repository
   4ef5324..f10ea7b  master -> master

リポジトリー test_repository に、 README.mdhello.py が追加されたので、更に別の計算機でこれらのファ イルを取得してみるでござる。


% git clone ssh://abc.astro.ncu.edu.tw:54321/home/git/test_repository
Cloning into 'test_repository'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (6/6), done.
% ls
test_repository
% ls test_repository/
README.md hello.py

参考文献



Frequently accessed files

  1. Computer___Python/20220518_0.html
  2. Computer___Network/20230726_00.html
  3. Misc___Taiwan/20240207_00.html
  4. Computer___Network/20230516_00.html
  5. Computer___FreeBSD/20220621_0.html
  6. Computer___Python/20220715_0.html
  7. Computer___Network/20230508_00.html
  8. Food___Taiwan/20220429_0.html
  9. Computer___Network/20240130_00.html
  10. Computer___Python/20220410_0.html
  11. Computer___NetBSD/20220817_3.html
  12. Computer___Network/20240416_00.html
  13. Computer___NetBSD/20230119_00.html
  14. Computer___Debian/20210223_1.html
  15. Computer___Python/20221013_0.html
  16. Computer___Python/20210124_0.html
  17. Computer___NetBSD/20220428_0.html
  18. Computer___NetBSD/20220818_1.html
  19. Computer___NetBSD/20240101_02.html
  20. Computer___Python/20240101_00.html
  21. Science___Math/20220420_0.html
  22. Computer___NetBSD/20220808_0.html
  23. Computer___TeX/20230503_00.html
  24. Computer___Network/20220413_1.html
  25. Science___Astronomy/20220503_0.html
  26. Computer___NetBSD/20230515_00.html
  27. Computer___NetBSD/20210127_0.html
  28. Computer___TeX/20231107_00.html
  29. Computer___Python/20220816_1.html
  30. Computer___Python/20230717_01.html


HTML file generated by Kinoshita Daisuke.