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\networkcd /→ ルートへ移動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/master や origin/develop として表示される。
(リモートリポジトリにおける)ローカルブランチ(C)
web上のブランチ。
リモート追跡ブランチを通じてしか知り得ない。
以上を踏まえた上でコマンドを再解釈すると、
push
AがB, Cに反映される。
fetch
Cの情報をBにのみ反映する。
pull
Cの情報をB, Aに両方に反映する。
- 厳密にはfetch + merge、fetchした後にカレントブランチに対して対応するリモート追跡ブランチをマージする。