コミットとプッシュ
ステージングにadd
git add -A //すべてのdiffをadd
git add . //カレントディレクトリ配下のdiffをadd
コミット
git commit -m "commit message"
プッシュ
git push origin master
プル
git pull origin branchName
修正内容の確認
ローカルとステージングの状況を確認
ローカルの変更と、ステージングに上がっている変更を確認する。
git status
リモートとの差分を確認する
git diff --name-only origin/branchName
-name-only:ファイル名のみを表示する。これを付けないと各ファイルの中身まで出力されるので、基本つける。
git diff はバリエーションが結構ある。
- ローカルとリモートのDiff:git diff
- ステージングとリモートのDiff:git diff –cached
- リモート同士のブランチ比較:git diff origin/master origin/branchName
- リモート同士のタグ比較:git diff origin/tag1 origin/tag2
- ファイル単体のDiff:git diff — [filePath]
git diff と git statusの違い
git statsu:ローカルとステージング、つまりは自身のPC内での変更を確認する
git diff:自身のPCとリモートの変更を確認する
ブランチ
ブランチの確認
git branch
ブランチを切り替え
git checkout branchName
ブランチを作成
ブランチを切り替えるときのコマンドに『-b』を付けることで、指定したブランチ名が無ければ新規作成される。
git checkout -b branchName
ブランチ名変更
リネームしたいブランチにチェックアウトしてから以下コマンド
git branch -m newBranchName
ブランチ削除
git branch -d localBranchName
Appendix
CurrentとIncoming
VSCodeなどで資源をマージする際、コンフリクトが起こると自分の修正とリモートの修正のどちらを優先するか聞かれる。
このとき、Current (現在の変更)とIncoming (入力側の変更)と表示されるが、どちらがどちらかよくわからない。
Incomingはorigin、つまりリモート側の変更で、 Currentは自身、つまりローカルの変更。
ローカルリポジトリとリモートリポジトリ
git push origin master
上記のコマンドを見たとき、originとかmasterとか、何をやっているのかよくわかっていない人はまずこの概念を理解する。
- ローカルとリモートが対になっている
- originはリモートリポジトリのデフォルトの名前
- masterはデフォルトのブランチ名
- gitで指示するのはリモートの場所、送信元は自分の今いるブランチとなる
上記から改めて最初のプッシュコマンドを文字にすると、『ローカルリポジトリ(自分のPC)の変更を、リモートリポジトリ(GithubとかGitLabとか)のmasterブランチにプッシュする』となる。
gitコマンドの送信元は自身のPCのカレントディレクトリとなるため、コマンドでは出てこない。gitコマンドでは、リモートの情報だけ入力するものと理解しておく。
masterは特別なもののように思えるが、ただのデフォルトのブランチ名。自分で作るブランチと特に変わりはないので、変な誤解をしないようにする。
originも同じくデフォルトのリモート名なので意識する必要はない。リモート名をorigin以外の名前で複数管理することは少ないので、おまじない程度に考えておけばよい。
インシデント
git diff に反映されない
git diff で修正差分を見ようとしたときに、ローカルで追加したファイルが反映されない。
これは、git diff では追跡対象として認識されているファイルいか表示しないため。新規ファイルは追跡対象と認識されずにgit diff では表示されないことがある。
git add してステージングに上げればgit diffでも表示されるようになる。
ステージングに上げたくない場合は、git status で確認する。これで見ると、新規ファイルは『Untracked files』というくくりで、まだgitで追跡されていないことがわかる。
コメント