Mizuno Group Logo
MIZUNO GROUP
Back to Client

Gitの基本操作・コマンド

1. リポジトリ作成

Windowsの場合、コマンドプロンプトcmdをデフォにする。

1-1. Cドライブ直下にGitHubディレクトリを作成する

  • 例) C:\Users\tadahaya\github

1-2. GitHubフォルダ内にリポジトリごとのディレクトリを作成し、関連する.pyファイルを置いておく

  • 例) C:\Users\tadahaya\github\test\test.py

1-3. cmd上で当該ディレクトリに移動

  • cd C:\Users\tadahaya\github\network
  • cd / → ルートへ移動
  • cd ../ → 一つ上のディレクトリへ移動

1-4. (初回のみ)gitの初期化。対象ディレクトリに.gitディレクトリを作成することと同義

git init
  • 当該リポジトリの初回、ないし初期化したいときのみ行う。

2. ブランチ

別々の作業を並行して行うために利用。

基本的にmasterは触らず、branchで作業する。

ローカルで作業していたブランチをpushすると、リモートでもブランチの方に反映される。

2-1. ブランチ作成

git branch [branch name]

単にbranchコマンドを実行すると、ブランチの一覧を取得できる。*付きが現在のブランチ。

  • このコマンドでローカルにブランチができる。リモートはこの段階では変わらない。

2-2. ブランチ切り替え

以下のコマンドでブランチを切り替えることで、切り替えた先のブランチへとコミットできるようになる。

git checkout [branch name]
  • git checkout -b [branch name] -bオプションにより、新しいブランチの作成と同時に移動ができる

2-3. ブランチの削除

ブランチコマンドに-dオプションを付けると削除になる。

git branch -d [branch name]

2-4. マージ

現在のブランチに対して、他のブランチで行った変更を取り込むためのもの。順序に注意。

git checkout [branch name]
git merge [another branch name] # [branch name]に対して[another branch name]ブランチをマージ

2-5. ブランチ名の変更

git branch -m [current branch name] [new branch name]
  • 作業中のブランチであれば-mオプションで新ブランチ名を指定すればOK

3. add

編集したファイルをステージ領域にアップする。

  • ステージ領域:コミットする前の一時的な保管場所
  • ステージング:addの操作

以下のコマンドで可。

git add "test.py"

ディレクトリ中全てのファイルの場合には、

git add .

4. commit

ステージ領域にあるファイルをリポジトリに記録する。

前回のコミット時から今回のコミット時までの差分のファイル(=コミット)が作成される。

ローカルリポジトリのみの操作、次のpushをするまでリモートリポジトリは変わらない。

以下のコマンドで可。

git commit -m "commit message"
  • commit messageには変更の内容を入れる。
  • -mで指定しない場合にはvimを使って長めの説明を書ける。
git commit

vimに移るので、以下の区分に分けてコメントを入れる。

  • add:ファイルの追加
  • fix:バグ修正
  • hotfix:クリティカル(致命的)なバグの修正
  • update:機能修正(バグではない)
  • change:仕様変更
  • clean:整理(リファクタリングなど)
  • remove:ファイルの削除
  • upgrade:バージョンアップ

コメントを入れ終えたらescでモードを切り替えた後に、:wq でvimを抜け出す。

5. push

リモートリポジトリにローカルリポジトリの情報を共有する。

ローカルの時と同じく、まずはaddでステージングし、その後にpushで変更を反映する。

5-1. remote add

以下のコマンドで可。

git remote add origin https://github.com/mizuno-group0/test.git
  • testの部分はリポジトリ名

remote add XXXX YYYY という構造になっており、XXXXというリモートリポジトリを作成している感じで、通例originが使われる。

originリモートリポジトリの別名と思っておけばOK。

5-2. push

ローカルブランチの情報をリモートに反映するコマンド。

以下のコマンドで可。

git push -u origin [local branch name] # [local branch name]はローカルのブランチ名
  • 最初はユーザー名、パスワードを聞かれる。
    • ユーザー名) mizuno-group0
    • パス) haya[一研の内線番号]
  • -uオプションは、上流ブランチ(更新を取り込む先のリモートのブランチ)の設定用で、一度設定してしまえば以降は不要。
  • リモートにある[local branch name]と同じ名前のブランチに対して反映する。

5-3. addの取り消し

git remote -v

で現状のリポジトリを確認し、

git remote rm origin

でoriginを削除できる。その後もう一度addからやり直せばよい。

6. プル

最新のリモートリポジトリを取得するためのコマンド。

git checkout master # masterブランチに移動
git pull origin master # masterブランチにリモートリポジトリのmasterブランチをマージ
  • 引数無しの場合は、カレントブランチのみが対象となる。

7. クローン

既存のリモートリポジトリをローカルに落とすために使うコマンド。

git clone https://github.com/'ユーザID リポジトリ名'.git 'クローン先のディレクトリ名'

特定のブランチをローカルにクローンする場合は-bオプションを使う。

git clone -b [ブランチ名] https://github.com/'ユーザID リポジトリ名'.git 'クローン先のディレクトリ名'

その他の操作やtips

◆ファイルの削除

リモートリポジトリのファイル削除する際には、該当のgitに入っている状態で以下のコマンド。

git rm [local file name] # ローカルから[local file name]が消える
git commit -m 'remove [local file name]' # リモートへ削除をコミット、コメントはもちろんなんでもいい。
git push origin master # リモートで削除が反映

◆remote

リモートリポジトリのやりとりに使用する。

remote add

remote add XXXX https://github~ でXXXXという名前のリモートリポジトリを当該urlのリポジトリに作成できる。

ただしGitHubのweb上では見えてこず、remote -v で可視化できる。

このときXXXXにpushすると、当該urlのリポジトリに変更が反映される。

つまるところurlが肝要となっており、普段は git push origin YYYY が適当だろう(YYYY:ブランチ名)。

remote rm

remote rm XXXX でXXXXという名前のリモートリポジトリを削除できる。

ただしGitHubのweb上では見えてこず、remote -v で可視化できる。

◆ブランチ削除の色々

マージされているローカルブランチXXXXの削除

git branch -d XXXX

マージされていないローカルブランチXXXXの削除

git branch -D XXXX
  • -dだとmergeしていないよって怒られる。

リモートブランチXXXXの削除

リモートリポジトリがoriginであるとき、

git push --delete origin XXXX # まず削除して
git fetch origin --prune # それを反映する感じ。

あるいは以下も可。

git push origin :XXXX
git fetch origin --prune

◆リモート追跡ブランチ

厳密には、

ローカルリポジトリ
├─ローカルブランチA
└─リモート追跡ブランチB

リモートリポジトリ
└─(リモートリポジトリにおける)ローカルブランチC

というような構造になっている。以下のHPが参考になる。

参照先

ローカルブランチ(A)

自分のマシン上のブランチ。

リモート追跡ブランチ(B)

リモートリポジトリのローカルブランチCを自身のローカルへと保持したブランチ。

fetchやpullを実行することで初めて反映される。

コマンド上では、origin/masterorigin/develop として表示される。

(リモートリポジトリにおける)ローカルブランチ(C)

web上のブランチ。

リモート追跡ブランチを通じてしか知り得ない。

以上を踏まえた上でコマンドを再解釈すると、

push

AがB, Cに反映される。

fetch

Cの情報をBにのみ反映する。

pull

Cの情報をB, Aに両方に反映する。

  • 厳密にはfetch + merge、fetchした後にカレントブランチに対して対応するリモート追跡ブランチをマージする。