LoginSignup
34
35

More than 5 years have passed since last update.

gitコマンドまとめ

Last updated at Posted at 2018-04-06

1.初級編 基本的な用語とコマンド

基本用語

用語 説明(イメージ)
ブランチ 枝。大元の枝から切り分けることで、作業ごとまたは作業人ごとで、複数の作業や履歴を並列に管理できる
レポジトリ 履歴管理を行う場所
クローン(clone) ダウンロードのイメージ。リモートのレポジトリをそのまま全てローカルに持ってくること
アド(add) コミットする前に仮にセーブするイメージ。addしないとコミットできない
コミット(commit) 変更対象をセーブするイメージ。コミットは全て履歴として残る
プッシュ(push) アップロードに近いイメージ。ローカルでコミットしたものをリモートにあげること
プル(pull) リモートリポジトリの最新状態をローカルリポジトリに反映させる。ダウンロードのイメージだが、cloneとは違いpullはすでにローカルにリポジトリがある状態(clone済みの状態)でしか行えない

基本コマンド

git clone git@github.com:〜 or https://github.com/〜

リモートのレポジトリをクローンしてきます。

git checkout 存在しているブランチ名

ローカルに存在しているブランチに切り替えます

git checkout -b 新しいブランチ名

現在のブランチから新しくブランチを作成します。

git add 作業パス(変更したファイル)

変更したファイルをcommitする前に取り込みます。(仮にセーブするイメージ)

変更したファイルのパスがわからない場合が、git status で確認できます。
全部addしたいときなどによく使うのは、git add . です。

取り消す際は、git reset HEAD 作業パス(変更したファイル) で取り消せます。
ファイルの内容は元のままなので、せっかくここまでやったのに消えてしまうという心配も不要です。

git commit

addしてある箇所をコミットします。
セーブに近いイメージです。セーブに履歴を付けれることがgitの特徴でしょうか。

git commit -m "コメント"

これだとvimを開かないで済みます。

git commit -m "コメント" -m "コメント"

と2行以上書くことも可能です。

git push origin hoge(pushしたいブランチ名)

プッシュします。これによりローカルからリモートにコミットが反映されます。
アップロードに近いイメージです。

git status

git addがきちんとされているか否かも確認できます。

git revert コミット番号

コミット履歴は残しつつ、あくまでコミットによる変更のみを打ち消すコマンドです。
コミット番号については、git log で調べられます。

git pull origin ローカルブランチ名

リモートの最新状態を取得します。

origin とは何か

レポジトリの場所(URL)の別名です。
最初にcloneしたときに、設定されます。

git config --list で確認できます。

2.中級編 やりたいことから逆引き

リモートで特定のブランチをクローンしてくる方法

git clone -b リモートで落としたいブランチ名 https://github.com/〜

-b でリモートのブランチ名を指定することがポイント

強制的にローカルブランチをリモートブランチに合わせる

git fetch origin
git reset --hard origin/master(現在のブランチ名)

リモートの最新の状態をもってくることができる。
ローカルとリモートの整合性が取れなくなった時に使うと良いと思います。
もしくは一度ローカルブランチを削除して、リモートブランチを持ってくるかです。

リモートブランチを持ってくる

まずはリモートにあるブランチの情報を取得して表示する

git fetch (リモートブランチの最新の情報を取得)
git branch -a (ローカルブランチとリモートブランチの一覧を表示)
git branch -a
* master
  remotes/origin/master
  remotes/origin/hoge_branch

上記で、remotes/origin/hoge_branchをリモートからもってきて、ローカルでhoge_branchとして作業する場合に下記のようなコマンドを打つ

git checkout -b hoge_branch origin/hoge_branch

3.上級編

既存ブランチは残しつつ、全く新しく0からのブランチを作る

まずはローカルにディレクトリを作成

$ mkdir hogeDir
$ cd hogeDir/

作成したディレクトリ内でinitし、リモートのレポジトリを持ってくる

$ git init
Initialized empty Git repository in /Users/user_name_hoge/hogeDir/.git/
$
$ git remote add origin git@github.com:hogehoge/hogehoge.git
$
$ git status
On branch master

Initial commit

nothing to commit (create/copy files and use "git add" to track)

マスターからブランチを切って新しいブランチを作成し、

ファーストコミット、プッシュまでを行う

$ git checkout -b hoge_branch
Switched to a new branch 'hoge_branch'
$
$ vi README.md
$ git add .
$ git commit -m "First commit" -m "READMEファイル作成"
[hogeDir (root-commit) 26tey74] First commit
 1 file changed, 11 insertions(+)
 create mode 100644 README.md
$
$ git push origin hoge_branch
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 521 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:hogehoge/hogehoge.git
 * [new branch]      hoge_branch -> hoge_branch
$

これでリモートに全く新しいブランチ『hoge_branch』ができました。
このブランチをデフォブランチ(リモートで設定可能)に設定すると、他のブランチに手をつけず、作業をすることができます。

異なるレポジトリから差分をコピーして持ってくる

まずはAAAレポジトリをクローンする

git clone git@github.com:hoge/AAA.git
cd AAA

確認する

git config --list

(中略)
remote.origin.url=git@github.com:hoge/AAA.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

コピーしてきたいBBBのレポジトリを登録する

※作業ディレクトリは変更しなくてよい

git remote add BBB git@github.com:hoge/BBB.git

※BBBの名前は何でも良い、この後呼び出すのに使います。

確認する

git config --list

中略
remote.origin.url=git@github.com:hoge/AAA.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
remote.BBB.url=git@github.com:hoge/BBB.git
remote.BBB.fetch=+refs/heads/*:refs/remotes/BBB/*

BBBレポジトリのブランチ情報を取得

remoteのレポジトリを登録した後に、必ずfetchしてあげることがポイントです。
これをしないとBBBレポジトリのブランチを指定できません。

git fetch BBB

これにより、BBBのレポジトリのブランチの情報が取得できる。

確認する

$ git branch -a
* master
  remotes/BBB/hogehoge
  remotes/BBB/error-fix
  remotes/BBB/fix-sass
  remotes/BBB/master
  remotes/origin/hogehoge
  remotes/origin/HEAD -> origin/master
  remotes/origin/hogetest
  remotes/origin/master

リモートのレポジトリを指定して、AAAのローカルブランチにマージする

git merge BBB/master

※現在作業中のブランチにマージされるため、masterから切ったブランチにマージして、pushしてリモートで差分を確認するのが良いと思います。

二回目以降に上記作業を行うケース

一度remoteでaddしてあれば、下記だけでいつでもコピーや差分が取り込めます。

git checkout master
git pull (AAAレポジトリの最新の状態を持ってくる)
git checkout -b AAA_2018xxxx (BBBをマージするためブランチを切っておく)
git fetch BBB (BBBレポジトリの最新のブランチを取得)
git merge BBB/master (AAA_2018xxxxへBBBレポジトリのmasterブランチをマージ)

覚えておくと便利

ブランチ変えて作業したいけど、差分があってadd,commitしないとブランチを変えれない時に使えるのがstashです。

git stash

一時的に保存してくれます。
とりだすときは git stash pop を使います。
リストは git stash list で見れます。

34
35
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
34
35