Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Git事始め

みんなgit使ってるけど実は使い方に自信ないぜ!っていう人向けに最低限必要な操作方法をまとめる。

接続アカウント

案件によってGitのログインアカウントが異なる場合があるので、そのときは都度user.name、user.emailを変更する。

設定確認

git config -l

アカウントの設定変更

git config --global user.name "[Gitのアカウント名]"
git config --global user.email "[メールアドレス]"

SSH接続設定

(1) ローカルPCで公開鍵と秘密鍵を作成(すでに作成済みの場合は再利用する)

cd ~/.ssh
ssh-keygen -t rsa -C "[メールアドレス]" -b 4096

(2) こんな感じで作られてるのが確認できるはず。この公開鍵をコピーし、GitHub側で登録する

cat ~/.ssh/id_rsa.pub

(3) 端末側で鍵を登録する

ssh-add ~/.ssh/id_rsa

※イメージ図
image.png

リポジトリ作ったら最初に使うコマンド

リポジトリに既にコードがあるので、ローカルにコードを持ってきたい場合

(1)クローン

まずクローンする。この操作でローカルに持ってこれるのはmasterブランチのみ。

git clone git@hogehoge.jp:xx.git 

※git@~の部分は、githubやgitlabなど使ってるサービスによって異なるので、各サービスの「clone」ボタンからコマンドを確認しよう

ではローカルに持ってこれたブランチ情報をみてみよう

git branch -a
* master
  remotes/origin/master

「*」は今このブランチをみてるよっていう印

(2) ブランチを変更する

masterブランチに直接コードをあげるのは稀。masterなので綺麗なコードを管理したいからね。ごちゃごちゃコード弄るときはだいたいdevelopブランチ等の専用ブランチで管理をする。このとき、「作業するブランチを切り替える」ということをする。

たとえばdevelopブランチをローカルに持ってくる(=ローカルにdevelopブランチを新規作成してリモートのdevelopブランチに紐づける)

git branch develop origin/develop

すると、こんな風になってるはず

git branch -a
* master
  develop
  remotes/origin/master
  remotes/origin/develop

同時にブランチ切り替えもしたい場合はこう↓

git checkout -b develop origin/develop

ん?じゃあこのdevelopブランチは最終的にmasterブランチにも反映しなきゃいけないんじゃ?
っていうときにマージという仕組みを使う。今回は「とりあえずgitを操作できるようにする」のが目標なのでいったん省略。

ローカルにコードがある(or これからコードを書く)ので、該当箇所をgit管理したい場合

(1) リポジトリ作成

まずhttps://github.com/ など使う場合はそちらにログインし、新規にリポジトリを作る。

(2) git管理したい場所に移動

コードを置いてる場所に移動する

cd [git管理したい任意のディレクトリ]

たとえば...

Cドライブ
 └ project
  └ hoge_project
   └ 99_src
    └ HelloWorld
     └ index.html
     └ css
     └ ...

HelloWorldディレクトリ以降をgitにあげたい場合は、このようになる

cd C:\project\hoge_project\99_src

指定したディレクトリの配下がgit管理されることになる。次の初期化をすることで、これがローカルリポジトリになる。

(3) 初期化

以下のように実行すると、ディレクトリ配下が空の場合、ローカルにリポジトリを作成して初期化される。
空でない場合、配置してるファイル達がローカルのリポジトリに変換される。

git init

(4) add & commit する

もし、まだなにもファイルが無い場合は、適当にREADMEという名前の空ファイルを作成しておくこと

addするとローカルリポジトリのインデックスに登録する

git add [ローカルリポジトリに追加したいファイル]

もしすべてのファイルをaddしたいときはこう

git add .

次にインデックスの内容をローカルリポジトリにコミットする

git commit -m "コミットログ"

(5) ローカルリポジトリとリモートリポジトリを紐づける

以上でローカルリポジトリは最新化した。次に、これをリモートのリポジトリにpushする。ローカルだけでgit管理してても意味ないからね。
以下のコマンドでローカルリポジトリとリモートリポジトリを紐づける。

git remote add origin https://~/[さっき作成したリモートリポジトリ.git]

またはこう↓ SSH接続できてるならこのコマンドでOK。

git remote add origin git@github.com:[さっき作成したリポジトリ名].git

※git@~の部分は、githubやgitlabなど使ってるサービスによって異なるので、各サービスの「clone」ボタンからコマンドを確認しよう

(6) リモートリポジトリにpushする

git push origin master

開発中に何度か使うコマンド

やれやれこれでめでたくgit管理できるようになった。
では開発を進めていくわけだけど、だいたい
(1)ファイル編集
(2)git add
(3)git commit
(4)git push
という流れで、キリのよいタイミングで定期的にgitにpushするとよい。
上記でも登場した branch -a add commit といったコマンドは開発中何度も使うことになる。

いまいるローカルブランチと、他のブランチ一覧を確認

間違えて意図しないブランチに書き込まないように、事前に今いるブランチを確認する癖をつけよう。

ローカルブランチを確認する
git branch
リモートブランチを確認する
git branch -r
上記2つを一度に行う
git branch -a

ローカルブランチを切り替える

git checkout [branch名]

↓開発用ローカルブランチを新規作成&ブランチ切り替えするときはこれ
git checkout -b [branch名]

ファイルを編集し...

ファイルの編集内容を確定(commit前に何度してもいい)

git add .

確定したファイルをコミット(push前に何度してもいい)

add済みのファイルをcommitする

git commit "コミットログ"
または
git commit 
するとviが開くので、そこにコミットログ記入

プッシュ

commit済みのファイルをpushする

git pull origin [ブランチ名]

これで編集したファイルをリモートリポジトリにあげられた。
開発中はこの繰り返し。

複数人で同じリポジトリを操作する場合は、マージやらフェッチやら他にも操作が必要になるけど、まず基本的はことは以上となる。

その他便利なコマンド

開発途中で、ローカルのブランチにリモートの内容を取り入れたい

編集中のファイルをすべてcommitしたあとに、

git pull origin [取得したい任意のリモートブランチ名]

編集をすべて取り消す

git checkout .

編集を特定ファイルのみ取り消す

git checkout [ファイルパス]

編集したファイルがあるかどうか確認する

addしてないファイルは赤字、addしたけどcommitしてないファイルは緑字でリスト表示される
すべてcommit済みの場合は何も表示されない

git status

差分をすべて確認する

git diff

差分を特定ファイルのみ確認する

git diff [ファイルパス]

直前のコミットを取り消す(ローカルブランチの編修内容はそのまま)

git reset --soft HEAD^

困ったとき、コミットログ(履歴)など調べる

git  log

ローカルブランチ削除(マージしたかどうか問わず消す)

git branch -D [ブランチ名]

注意事項

  • pushは同じブランチ名に対してしかできない
  • pullはどのブランチに対してもできる
suusan
WEB系システム、iOS/Androidアプリ開発がすき。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away