2024-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> 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 </newname></oldname></dirname></filename></filename>
いちいちgit commit、git pushと毎回打つのが面倒なのでbashrcに関数作るのが便利。
【ローカルでの作業(ファイル編集)を取り消す方法】
特定ファイルのみ取り消す場合
git checkout <filename> </filename>
特定ディレクトリ以下の全ファイル変更を取り消す場合
git checkout <dirname> </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、ファミリ指定をブラウザ標準へ戻し、ボールド。
当サイトでの例はこのページなどを参照。
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
Intel Macbook2020にBootCampで入れたWindows11 Pro 23H2のBluetoothを復活させる
Windowsのデスクトップ画面をそのまま配信するための下準備
WindowsでGPUの状態を確認するには(ASUS系監視ソフトの自動起動を停止する)
CORESERVER v1プランからさくらインターネットスタンダートプランへ引っ越しメモ
さくらインターネットでPython MecabをCGIから使う
さくらインターネットのPHPでAnalytics-G4 APIを使う
インクルードパスの調べ方
【Git】特定ファイルを除外する.gitignore
【Ubuntu/Debian】NVIDIA関係のドライバを自動アップデートさせない
【Apache】サーバーに同時接続可能なクライアント数を調整する
Windows版Google Driveが使用中と言われアンインストールできない場合
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
【Linux】iconv/libiconvをソースコードからインストール
Googleスプレッドシートを編集したら自動で更新日時を入れる
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
【ひかり電話+VoIPアダプタ】LANしか通ってない環境でアナログ電話とFAXを使う
Windows11でMacのキーボードを使うには