Git
ソースコードのバージョン管理ツール
リポジトリはリモートとローカル双方で持っている
親子関係の指定は比較的事由に変更できるようだ
罠っぽいものが多いかも
作業ファイルがないものをベアレポジトリ (bare repository)
作業ファイルがあるものをノンベア (non-bare) レポジトリ という
table: bare
形式 git複製 作業ファイル
ノンベアリポジトリ .git の形 あり
gitファイルの持ち方
普通は親はベアレポジトリであることが多いが、作業用のノンベアレポジトリからcloneすることもできてしまう。
そうするとpushができなくなる。ということで、いろいろ面倒なことも起きる。
table: できること
親 子 gitコマンド
bare non-bare clone ○
bare bare clone --bare
non-bare non-bare clone ○
non-bare bare
bare non-bare push ○
bare non-bare push --mirror ?
bare bare push --mirror ○
non-bare non-bare push ×
git clone されているところからさらに複製するといろいろ危険
複製
git clone 複製とチェックアウト <親.git> <子>
--bare bare として複製する
git commit
git commit --amend
最後のpush前のコミットの修正ができる
push済みの場合は push -f で強制修正が必要なのかも(罠)
git pull
git push
$ git push --set-upstream user@server:/dir/name.git master
master または main を新しいベアリポジトリにアップする
ベアリポジトリは初期化されているといいのかも
git push -f
微修正 commit --amend したものをpush したりできる?
git checkout の代わりに switch などを使う
git switch
git restore
tag作成
git tag tagName
git tag -a tagName -m 'comment'
tag削除
git tag -d tagName
tagを使いたいとき
tag からブランチを生やす
git tag
git checkout -b branchName refs/tags/tagName
tag の push
git push origin --tags
tag に戻る
git revert
リポジトリの複製
git push --mirror <server.path>
パッケージバージョン管理
コンテナパッケージ管理
Docker Hub
Git以前のバージョン管理