Git の (ローカルでの) 使い始め方 (ver. 2)

履歴

  • 2021-11-01 高橋芳幸 新規作成

目的

ローカルで git を使って管理する. ただし, ローカルの中に管理用 (bare) リポジトリと作業用リポジトリを別に持つことにしてみる. (実際には, 先に作業用リポジトリがあったのだけど.)

  • 目指す構成
    • 管理用リポジトリトリ (bare リポジトリ) /work02/yot/work/git_repos/radmodels.git
    • 作業用リポジトリトリ /work02/yot/work/radmodels.git

基本ユーザ情報の設定 (git を使い始める際に一度やれば良い)

Git の確認 (あまり意味はないが)

$ git --version
git version 2.11.0

ユーザ情報の設定

$ git config --global user.name yot
$ git config --global user.email "yot _AT_ gfd-dennou.org"

Git の出力に色を付ける (らしい)

$ git config --global color.ui auto

使用するエディタの設定

$ git config --global core.editor "emacs -nw -q -l ~/.emacs-utf8"

日本語ファイル名を使えるようにする (らしい)

$ git config --global core.quotepath off

ページャの設定 (less が良いらしい. その他の場合には log が文字化けしたりする.)

$ git config --global core.pager less

作業

管理用リポジトリを作成

at /work02/yot/work/git_repos

$ mkdir radmodels.git
$ cd radmodels.git
$ git init --bare
  • 新リポジトリの設定
    • 参考ページ
      • http://www.gfd-dennou.org/library/dcpam/git_repos/doc/dcpam_git_repo_setup.htm
    • ディレクトリ移動

      $ cd hooks

    • update フック

      $ wget http://www.gfd-dennou.org/library/dcpam/TEBIKI.gitrepos.scripts/update $ chmod 755 update

    • post-update フック

      $ mv post-update.sample post-update $ chmod 775 post-update

作業用リポジトリを作成

  • リポジトリのクローン

    $ cd /work02/yot/work
    $ git clone -v /work02/yot/work/git_repos/radmodels.git
  • フックの設定

    $ cd .git/hooks
    $ wget http://www.gfd-dennou.org/library/dcpam/dcpam5/dcpam5-git/doc/dvlop/git_scripts/commit-msg
    $ chmod 775 commit-msg
    $ wget http://www.gfd-dennou.org/library/dcpam/dcpam5/dcpam5-git/doc/dvlop/git_scripts/pre-commit
    $ chmod 775 pre-commit
    $ cd ../..
  • 無視するファイルパターンを登録

    @トップディレクトリ (git init したディレクトリ)

    $ cat > .gitignore 
    *.[oa]
    *~
    *.so
    *.dvi
    *.aux
    *.idx
    *.toc
    depend
    ^D

    (先頭にスペースは入れない.)

    最後の ^D は Ctrl-d.

    $ git add .gitignore 
    $ git commit -m "Registered files (patterns) to ignore in the repository"

    しかし, 単純にこれをやると

    Unexpected else.

    と言われる.

    どうやら .git/hooks/pre-commit の中の if 文で躓いているらしい. (おそらく, 空のリポジトリに commit するときに怒られる.)

    ひとまず .git/hooks/pre-commit を外して Makefile だけ commit したら 上手く行う.

    $ mv .git/hooks/pre-commit .git/hooks/pre-commit.bk
    $ git commit -m "Registered files (patterns) to ignore in the repository"
    $ mv .git/hooks/pre-commit.bk .git/hooks/pre-commit

リリース作業

タグの設定

$ git tag -a radmodels-20210901 -m "Snapshot on 2021/09/01."
             ^^^^^^^^^^^^^^^^^^ ← これがタグ名となる. 
$ git push --tags origin master
$ git push --tags dennou-k master

git リポジトリに移動

$ cd /work02/yot/work/radmodels.git

展開先ディレクトリ (<path>/radmodels-20210901) を作成

$ mkdir <path>/radmodels-20210901
$ git archive --format=tar --output=<path>/radmodels-20210901/archive.tar radmodels-20210901
                                                                          ^^^^^^^^^^^^^^^^^^ ← タグ指定
$ cd <path>/radmodels-20210901
$ tar xvf archive.tar
$ rm archive.tar
$ cd ..
$ tar cvfz radmodels-20210901.tgz radmodels-20210901