Git
Git本
Gitを巻き戻す
hashの位置までコミットを戻す、ディレクトリはそのまま。
code:reset.sh
git reset --soft comit_hash
共同作業しているリモートリポジトリへのgit resetは危険性があるらしい。
差分
文字単位で差分を取る。
code:sh
git diff --color-words --word-diff-regex='\\w+|[^:space:]' Merge
通常のマージ
--no-ff
git merge branch_name --no-ff
マージコミットを必ず作成する
特に理由がなければ、これが無難かと思う。
git merge branch_name
--no-ffを付けないファストフォワードマージだと、マージコミットが基本的には作成されない。
git rebase
ブランチのコミットがきれいになるが、コミットを差し替えているため、git push がそのままだとできない。
コミットをまとめてマージ
squash
git merge --squash
mergeの取り消し
git merge --abort
コンフリクト修正中の取り消し?
git reset --hard HEAD
特定コミットidをマージする
git cherry-pick
Push
以下実行する際は注意する
git push --force-with-lease
ローカルが新しければ上書き
git push -f
強制
TagをPush
git tag -a $tag -m comment;
git push origin $tag
他
日付順でブランチをソートして表示
git branch --sort authordate
------
リモートリポジトリの設定
git remote add <name> <url>
nameは任意、remoteのalias?
private リポジトリとしてフォークするとき、フォーク先のリポジトリを追加する。
Gitライブラリ
tig
shift+oで、diffのビューモード
lazygit
キーバインド
Monorepo
モノレポについての誤解 - Misconceptions about Monorepos: Monorepo
復数のアプリを同じレポジトリで管理
githubはフォルダーごとに権限設定可能みたい
CI/CD for monorepos
Git Bash
参考
git config --local core.autocrlf input
派生元のブランチ取得
git show-branch | grep '*' | grep -v "$(git rev-parse --abbrev-ref HEAD)" | head -1 | awk -F'[]~^[]' '{print $2}'