Closed9
gitコマンド、メモ
- add取り消し
- commitメッセージの変更
- commit取り消し
- commitログ確認(1行目だけ)
- stash(作業の退避)
- 安全なgit push -f
- commitをまとめる
- alias登録
add取り消し
// すべてのファイルのaddを取り消す
$ git reset HEAD
// 特定ファイルのaddを取り消す
$ git reset HEAD filename
commitメッセージ変更
// 最新のcommitメッセージの修正(コマンド叩くとエディタが開く)※push前
$ git commit --ammend
// 1行の場合
$ git commit --ammend -m "[commit message]"
// 2つ以上前のcommitメッセージの修正 ※push前
$ git rebase -i HEAD~[number]
[number]: HEADからさかのぼるcommitの数
$ git rebase -i [previous-to-target-commit-id]
[previous-to-target-commit-id]: 対象とするcommitの1つ昔のcommitのIDを入れる
エディタで、対象となるcommitのe(dit)を選択し保存、次のインターフェースでcommitメッセージを修正
// push済みのcommitメッセージの変更(誰もそのpush内容をpullしてない状態)
$ git commit --ammend
$ git push --force-with-lease --force-if-includes <repository> <branch>
commit履歴確認
// commitログを1行表示
$ git log --oneline
$ git log --pretty=oneline
// マージの履歴を見たい時
$ git log --oneline --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset %C(bold blue)<%an>%Creset'
commit取り消し
// 直前のcommitをなかったことにする(push前)
$ git reset --soft HEAD^
stash(変更の退避)
// ローカルの変更を退避する(`--include-untracked|-u`はuntrackedファイルも一緒に退避する)
$ git stash -u
// 変更を退避する、名前を付ける
$ git stash save "stashname"
// 退避した変更を一覧
$ git stash list
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051 Revert "added file_size"
stash@{2}: WIP on master: 21d80a5 added number to log
// 退避した変更を再度適用する
$ git stash apply stash@{0}
// 退避した変更を削除する
$ git stash drop stash@{0}
// 退避した変更を適用して、削除する
$ git stash pop stash@{0}
安全なgit push -f
push済の内容をrebaseした際にはその結果をリモートに反映する必要がある。その際にgit push --force
を利用するがgit push --force
は強制pushを行うため、他の開発者の変更を書き換えてしまう可能性があるため、安全ではない。そのため--force-with-lease
、--force-if-includes
といったオプションを利用することで安全に変更を書き換えたpushが行える(というより、破壊的な書き換えができない)
$ git push --force-with-lease --force-if-includes <repository> <branch>
commitをまとめる
// HEADからさかのぼるcommit数をnumberに指定
$ git rebase -i HEAD~[number]
// 対象としたいcommitの1つ昔のcommitのIDを指定
$ git rebase -i [commit-id]
alias登録
$ git config --global alias.<alias-phrase> <target-command>
// [alias]の部分をエディタで直接いじる(他の設定もこれでいじれる)
$ git config --global --edit
[alias]
log-graph = log --graph --oneline --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset %C(bold blue)<%an>%Creset'
--global
(ユーザー単位)の他に--system
(システム全体)、
(リポジトリ対象)で設定の適用範囲が変わる。というか、いじっている設定ファイルが違う。
このスクラップは2023/01/17にクローズされました