🍒

git コマンドメモ

2023/06/25に公開

実際に使ったコマンドライン。

git delete でブランチを削除する

git checkout main // 目的のブランチから抜ける
// delete local branch
git checkout development
git branch -d branch-name // リモートにある場合
git branch -D branch-name // リモートにない場合
// delete remote branch
git push --delete origin branch-name // リモートのみ削除する、リモートにない場合はエラー

git reset

git reset --hard origin/main // ローカルの変更は完全になくなる、その後 git pull
git reset HEAD // git addの取り消し。ローカルに変更分が残る
git reset HEAD file_name // 同上。特定のファイルのみの取り消し

git stashで現在の変更を退避する

git stash // 簡易
git stash apply // 最後にStashしたものが戻る
git stash save "message" // メッセージを入れる場合
git stash list // これまでのStashしたリストを見る
git stash apply 3 // stash@{3}に戻す 
git stash push -- package-lock.json //1ファイルだけStashする

git configのローカルとグローバル

// 設定はすべてのプロジェクトおよびリポジトリで共有される
git config --global user.name "xxx"
git config --global user.email yyy@zzz.com
// 異なるユーザー情報を使う場合、以下のようにローカルリポジトリ内で設定する
git config user.name "xxx"
git config user.email yyy@zzz.com

その他の便利なコマンド

git commit --amend //コミットメッセージを変更する

リベースを使った作業後の手順

git switch -c [branch-name]
git add .
git commit -m "commit message"
git push origin HEAD // 一旦、pushしておくと安全
git stash // 必要な場合
git pull --rebase origin development // リベース
// ローカルで自分の変更の動作を試し、問題がなければ以下をやる
git branch --set-upstream-to=origin/[branch-name] // 必要な場合、紐付けする
git push -f origin [branch-name]

自分の変更のみを一旦、プッシュするのは、必ず動く状態をとっておくため。他の人の変更で、自分の変更が動かなくなった場合は、解決するまでプッシュしないのが安全。git checkout -b [branch-name]は、git switch -c [branch-name](Git v2. 23以降)は同じこと。

Git Rebase でコミットを Squash(統合)する手順

git add .
git commit -m "comment message"
git rebase -i [branch name]~2 //現在のブランチに対して最後の2つのコミットを統合する
// vim で操作 - 統合したいコミットの前にある「pick」のテキストを「s」に変更する
git push -f origin [branch name] //リモートリポジトリに強制的にプッシュする

git pull --rebase origin developmentは、以下の2行と同じ

git config pull.rebase true // リベースにセット
git pull origin development 

.git/configで、rebase: trueにセットされる。

Discussion