Git備忘録

コミットとプッシュ

ステージングに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で追跡されていないことがわかる。

コメント

タイトルとURLをコピーしました