LoginSignup
9
0

【git駆け出し向け】これだけ知っとけばなんとかなる(と思っている)gitコマンドチートシート

Last updated at Posted at 2023-12-17

先に謝罪:アドベントカレンダーに間に合わせるため、多少雑になってしまいました。必要に応じて加筆修正入れます

gitに出会って7年くらい経ちましたが、「これだけ知っておけば90%くらいの状況においては困らなくね?」と感じているコマンドについて整理しておく。

gitコマンド多すぎ問題があるので、どこまで知れば取り急ぎ、9割程度の場合は困らないかにフォーカスします。
これだけは呼吸をするように命令すべし(と思っているものです)。

※概要理解のため、細かいところを省いたりしていますが、細かい部分については実践で学ぶのが最も良いと思うので、それぞれのプロジェクトなどで実践してください。

説明すること

  • コマンドで何がおきるかの概要

説明しないこと

  • 厳密なブランチの変化
  • commit履歴の変化

git clone

GithubやGitLabで管理されているリモートリポジトリを、ローカルリポジトリとして、文字通りクローン(複製を作る)コマンド。
開発などを開始する際に、まず初めに実行するコマンド。

gitclone.png

使い方

まず任意のディレクトリに移動する。

cd /C/user/soepy

hogeにあるfugaリポジトリをローカルにcloneする場合は以下のようになる。

git clone https://github.com/hoge/fuga.git

soepyフォルダ以下にfugaフォルダが作成されます。その中には現在のmainブランチ(masterとか、developとかプロジェクトによって名前は違うが)の状態がクローンされています。

git checkeut -b

gitの特徴であるブランチ管理のメリットを享受するための最も重要なコマンドかもしれません。
出荷物を作成したり、最も状態の進んだブランチがmainであるのであれば、そこから自分用のブランチを複製して開発し、再びその修正をmainに戻す(マージする)。
一般的に最もシンプルな「トランクベースの開発」といったりするものは、このような流れで開発が進んできいます。
そのために新しいブランチをmainブランチから分岐させて新しく作るのがgit checkout -b コマンドという理解で概ねOKです。

image.png

使い方

まずcloneしたフォルダに移動します

cd /C/user/soepy/fuga

この時mainブランチにいることを確認してください。

git branch 

先頭に * がついているものが今のブランチです
ここでtopic-hogeブランチを作って切り替える場合

git checkout -b topic-hoge

これで、目的が達成されます。

※正確には -bをつけることでbranchとcheckoutを同時にやっていることにになるので複数のコマンドを集約している感じです。

git fetch

git cloneはなにもないところにリモートから持ってくるコマンドですが、git fetchはすでにあるものに対し、リモートにのみ存在する差分をローカルのリモート追跡ブランチに持ってくるだけのコマンドです。
pullとの差は、実際にローカルのブランチに入るか入らないかの差です。
ここイメージしづらいのでリンクしておく。

image.png

使い方

まずcloneしたフォルダに移動します

cd /C/user/soepy/fuga

リモートリポジトリのブランチの状態取り込む場合は以下のようになります

git fetch 

git pull

チーム開発をすれば、他者の修正内容が反映されることによりブランチの状態が変化していきます。cloneした時空変更が増えます。その変更をローカルに取り込む場合、このpullコマンドを使います。

image.png

使い方

まずcloneしたフォルダに移動します

cd /C/user/soepy/fuga

リモートリポジトリブランチの状態取り込む場合は以下のようになります

git pull

ここで注意なのが、「git pull」は、今のブランチの差分をリモート→ローカルに持ってくる動作になります。

mainブランチの内容をローカルリポジトリに持ってくるときはcheckoutしてmainブランチに切り替えた状態でやります。

git add

修正した差分をブランチに反映させるための準備(ステージング)を実行するコマンドです。

コードを修正したらまずこのコマンドを実行します。

使い方

差分全てをステージングする

git add . 

特定のファイルの差分のみをステージングする

git add /C/user/soepy/fuga/aaa.py

特定のフォルダ階層の差分のみをステージングする

git add /C/user/soepy/fuga/piyo/

ワイルドカードに一致する差分のみをステージングする

git add *fuga/piyo*

git commit

addコマンドでステージングしたものをcommitします。
SVNではcommit=リモートに反映ですが、gitでは、自分が編集しているブランチに対しcommit履歴をつくる処理となります。

使い方

ステージングしたものをcommitする

git commit -m "コミットを作成する" 

-m "コミットを作成する" をつけることでコミットメッセージをつけます(通常のチーム開発をしている場合は必須だと思います)

git push

変更をリモートリポジトリに反映します。
このコマンドを実行したあとにGithubやGitLab上でPR、MRを作成することになります。

使い方

コミットをリモートに反映させます。

git push origin/topic-hoge 

補足リカバリーする時に知っておくとたすかる

  • git reset --soft HEAD^
  • git reset --hard
  • git push -f

あとは適宜足していきます

9
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
0