業務とか個人開発で使ったGitコマンドまとめ
定番どころ
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: main1.cpp
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: main2.cpp
Untracked files:
(use "git add <file>..." to include in what will be committed)
"main3.cpp"
追跡されているファイルの状態がわかる
Changes to be committed
まだコミットされていない状態
Changes not staged for commit
変更されたが、まだ git add されていないファイル
Untracked files
Gitに追跡されていない新規ファイル
$ git add .
$ git add *
変更をステージングする
.
だと全ファイルをステージング、*
だと隠しファイル以外をステージング
$ git commit -m "text"
$ git commit --amend -m "text"
ステージングエリアにある変更を確定し、コミットを作る
--amend
をつけるとコメントメッセージを変更できる
$ git branch
$ git branch -r
$ git branch -a
ブランチの一覧を表示する
rオプション
でリモート追跡ブランチ、aオプション
でローカルとリモート追跡ブランチ両方を表示させる
$ git branch -d [ブランチ名]
$ git branch -D [ブランチ名]
ブランチの削除をする
dオプション
でマージされたブランチを削除、Dオプション
で強制的にブランチを削除
$ git branch -m [新しいブランチ名]
$ git branch -M [新しいブランチ名]
現在のブランチの名前を変更する
Mオプション
で強制的に変更する
$ git checkout [ブランチ名]
$ git checkout -f [ブランチ名]
ブランチを変更する、fオプション
をつけることで強制的にブランチを切り替える
$ git switch [ブランチ名]
$ git switch -f [ブランチ名]
ブランチを変更する、基本的にgit checkout
と同じだが、ブランチを切り替えるという役割しかないのでブランチを切り替えるだけの時はgit switch
が推奨される
$ git fetch
リモートにある変更をローカルに取得する
具体的にはリモート追跡ブランチに最新の状態を反映させる
main
ブランチはorigin/main
ブランチに反映される
$ git merge [ブランチ名]
現在のブランチに対象ブランチの変更を取り込む
$ git pull [リモートリポジトリ] [ブランチ名]
リモートにある変更をローカルに取得し、その取得データをブランチにマージさせる
仮にmain
ブランチにいる場合、
$ git fetch
$ git merge origin/main
と同等である
ちなみにすでにgit pull
をする前に該当ブランチでコミットをしていた場合、
$ git pull --rebase [リモートリポジトリ] [ブランチ名]
とすることで先にリモートの変更コミットを取得し、その上からローカルで作ったコミットを上乗せすることができる
$ git reset --soft [コミット]
$ git reset --mixed [コミット]
$ git reset --hard [コミット]
softオプションはコミットのみを取り消して、特定のコミットまで巻き戻す
mixedオプションはコミットを取り消して、特定のコミットまで巻き戻す。ステージングも取り消す
hardオプションは特定のコミットまで巻き戻してそれまでのコミットを取り消す(変更も取り消す)
$ git reset HEAD
ステージングを取り消すが、変更はそのまま
HEADで現在のコミットを参照しているため、コミットには影響を与えない
オプションをつけない場合はmixedオプションになっている