アプリケーション開発ポータルサイト
ServerNote.NET
Amazon.co.jpでPC関連商品タイムセール開催中!
カテゴリー【Git/GitHubDebianFreeBSDMacOS
【ソースコード管理】Git/Hub/Lab/Gist-It
POSTED BY
2023-10-12

【インストール】

apt install git # FreeBSD: pkg install git
# gitに Who Are You ? と聞かれる場合、user,mailを設定する
git config --global user.email "hogeuser@example.com"
git config --global user.name "hogeuser"
# もしくは .gitconfig を直接作成
[user]
        email = hogeuser@example.com
        name = hogeuser

【外部GITサービスへの登録】

一般公開して差し支え無い場合リモートリポジトリGUIサービスGitHubを利用する。
一般公開しない場合ローカルリポジトリGUIパッケージGitLabをダウンロードしてインストールする。
どちらの場合もまずユーザー登録を行いID/PASSでログイン後、SSH公開鍵を登録する。
公開鍵の作成は強度の高いED25519を利用する。

ssh-keygen -t ed25519

できあがった .ssh/id_ed25519.pub を、GitHub(Lab)のプロフィール管理画面/SSH Keysに貼り付け登録。

【プロジェクト/リポジトリ作成】

公開鍵を登録したらGitHub(Lab)にて、新規プロジェクト/リポジトリを作成する。

【ローカルLinuxマシンにて作業開始】

上記でリポジトリ作成が終えていれば、Clone or download で、cloneするためのコマンドライン例が取得できる。
例)

git clone git@github.com:servernote/AndroidTest.git

これでローカルマシンにリポジトリがコピーされる。
なおSSHでcloneしているため、.sshディレクトリにGUIサービスに登録した公開鍵に対する秘密鍵が無くてはならない。
例).ssh/id_ed25519 またはRSAの場合 .ssh/id_rsa
このいずれでもない名前で保存している場合、.ssh/configにその旨を書かなくてはならない。
例).ssh/config

Host github.com
IdentityFile ~/.ssh/id_rsa.git #秘密鍵がid_rsa.gitで保存している場合

【外部GITサービスを使わない場合】

GitHubやLabを使わずgitコマンドだけで完結したい場合

mkdir -p /home/hoge/git_server/TestProject.git
cd /home/hoge/git_server/TestProject.git
git --bare init --shared #リポジトリ作成
ls #作成確認
# 別の場所へ行ってクローン
mkdir -p /home/hoge/git_client
cd /home/hoge/git_client
git clone localhost:/home/hoge/git_server/TestProject.git

localhostにSSHを経由してcloneしているので、ssl localhostで自分にログインできなくてはいけない。
(.ssh/id_rsa が.ssh/authorized_keysとペアになっている必要あり)
ポートや鍵ファイル名が異なる場合、その旨は.ssh/configに書く。

社内にApache経由で誰でもクローン可能・読み取り専用公開する場合httpd.conf

ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
SetEnv GIT_PROJECT_ROOT /home/hoge/git_server
SetEnv GIT_HTTP_EXPORT_ALL
<LocationMatch "^/git">
    Require all granted
</LocationMatch>

などとすれば、

git clone http://127.0.0.1/git/TestProject.git

と、クローンできる。

https://git-scm.com/docs/git-http-backend

には、認証されてないクライアントはgit pull,fetch,cloneのみできると書いてある。
上記設定ならpushはできないはず。試しにファイル追加commit後pushしてみたら、

Service not enabled: 'receive-pack': /usr/lib/git-core/git-http-backend

403エラーになり書き込めず、Apacheのerror_logには上記のように出ているのでちゃんと読み込み専用になっているようだ。

【ファイル追加・コミット・リモートに反映】

コミット時のコメント入力用エディタ設定をしておく

# Debian bash
export LANG=ja_JP.UTF-8
export EDITOR=vi
# FreeBSD tcsh
setenv LANG ja_JP.UTF-8
setenv EDITOR vi

cloneしたディレクトリ内にファイルやディレクトリを作成追加していって作業する。

# リポジトリに追加
git add <filename or dirname>
# コミット
git commit -a -m "コミットメッセージ"
# 作業内容をすべてリモートリポジトリ(GUIサービス)へ反映
git push -u origin master
# ファイル/ディレクトリを管理対象から削除
git rm <filename>
git rm -r <dirname>
# 名前の変更
git mv <oldname> <newname>
# ステータスの確認
git status
# リモートリポジトリの内容をローカルに反映する svn update相当
git pull
# リモートとローカルの差分を表示する
git diff remotes/origin/master

いちいちgit commit、git pushと毎回打つのが面倒なのでbashrcに関数作るのが便利。

【ローカルでの作業(ファイル編集)を取り消す方法】

特定ファイルのみ取り消す場合

git checkout <filename>

特定ディレクトリ以下の全ファイル変更を取り消す場合

git checkout <dirname>

よって、リポジトリ内の全ファイル変更を取り消すには.gitのあるトップディレクトリで

git checkout .

とする。

【ブランチを作成し反映する】

GitLabの場合GUIからブランチを作成できるが、GitHubの場合gitコマンドでブランチを作成。

# 新規ブランチ作成
git branch work_branch
# ブランチ一覧の確認 現在のブランチには*がつく
git branch
# 現在のブランチを変更
git checkout work_branch
git branch #変わったか確認
# あとは同じようにファイル追加等作業をして、リモートリポジトリに反映する。
git push -u origin work_branch

master でなく新規ブランチ名を指定するのがポイント。

【GitHubリポジトリのコードをブログ等で公開する】

Gistだと別空間の単一ファイルのためgitで作業しながら公開ができないので、リポジトリソースファイルをそのまま公開するなら外部サービスのgist-itを使うのがよい。GitHub上のリポジトリパスをsrcipt srcに貼り付ける。

<script src="https://gist-it.appspot.com/github/servernote/samples/blob/master/mecab.c?footer=minimal"></script>

デフォルト状態だとフォントサイズその他がいまいち合っていないので、CSSでカスタマイズする。上記script src=のURLをブラウザURLにそのまま貼り付ければ、どのようなCSS classをいじればいいのか大体わかる。
WordPressの場合、「追加CSS」に以下記述をして調整してみる。

/* gist-it カスタマイズ */
.gist-it-gist * {
  font-size: 14px !important;
  font-family: initial !important;
  font-weight: bold !important;
}

フォントサイズを14、ファミリ指定をブラウザ標準へ戻し、ボールド。
当サイトでの例はこのページなどを参照。

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】