【git】git操作まとめ

gitについてよく使う操作をまとめました。

ブランチ操作

作業ブランチの作成と削除をよく使うのでメモしておきます。

以下はmasterを派生元ブランチとして作業ブランチを作成する場合の例です。

作業ブランチの作成

# masterブランチへ切り替え
git checkout master

# ローカルブランチがmasterに切り替わっていることを確認する
git branch

# ローカルに開発ブランチを作成する
git branch develop/xxxxx

# サーバーにプッシュする
git push origin develop/xxxxx

# ローカルに作ったブランチを削除する
git branch -D develop/xxxxx

# 中央リポジトリへ追加する
# これをすることで他の作業者がこのブランチが見れるようになる
git branch --track develop/xxxxx origin/develop/xxxxx

# ローカルブランチを切り替える
git checkout develop/xxxxx

不要になったブランチを削除

# ローカルブランチを削除
git branch -D develop/xxxxx

# 中央リポジトリからブランチを削除
git push origin :develop/xxxxx

タグに関する操作

タグ付け

# ローカルでタグを付ける
git tag release_v1.0

# ローカルで付けたタグをサーバーへ反映
git push origin release_v1.0

タグを削除

# ローカルでタグを削除
git tag -d release_v1.0

# リモートのタグを削除
git push origin :release_v1.0

タグの一覧表示

# ローカルのタグ一覧を表示
git tag

# リモートのタグ一覧を表示
git ls-remote --tags

タグをチェックアウト

# タグをチェックアウト
git checkout refs/tags/[タグ名]

コミットの取り消しとリモート反映

リモートにプッシュしてしまったコミットを取り消す方法

コミットIDの取得

git log 等で戻したいコミットのコミットIDを取得する。

$ git log
commit 129825e3ce55a286819ec8b0c0bde8281c244b9a
Merge: a26a971 1298352
Author: xxx yyy <xxx@users.noreply.github.com>
Date:   Wed Aug 21 13:00:26 2019 +0900

    ○○○○○○○○○○

commit 4402dd4b4b91916c58d660881dfe78e2a8f688ea
Author: xxx yyy <xxx@users.noreply.github.com>
Date:   Wed Aug 21 11:57:35 2019 +0900

    ××××××××××

commit 395aeb3678e2a231bb55f80296032ceea45e3396
Author: xxx yyy <xxx@users.noreply.github.com>
Date:   Tue Aug 20 17:09:21 2019 +0900

    △△△△△△△△△△

ローカルブランチのコミットを取り消す

ローカルブランチを以下のコミットIDまで戻す。

commit 395aeb3678e2a231bb55f80296032ceea45e3396

$ git reset --hard 395aeb3678e2a231bb55f80296032ceea45e3396
HEAD is now at 395aeb △△△△△△△△△△

リモートへ反映する

ローカルブランチで取り消したコミットをリモートへ反映する。

commit 395aeb3678e2a231bb55f80296032ceea45e3396

$ git push -f origin 395aeb3678e2a231bb55f80296032ceea45e3396:[branch]
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/[repositories]/test.git
 + f2ef64e...395aeb 395aeb3678e2a231bb55f80296032ceea45e3396 -> [branch] (forced update)

forkしたブランチに本家のmasterブランチの更新を反映する

Git forkしたリポジトリで作業をしている時、本家のmasterブランチの修正を取り込む手順です。

事前準備

  • 現状を確認(1)

    $ git remote -v
    origin https://github.com/[リポジトリ] (fetch)
    origin https://github.com/[リポジトリ] (push)
    
  • 更新用のリポジトリ(upstream)を作成する

    $ git remote add upstream [fork元リポジトリ]
  • 現状を確認(2)

    $ git remote -v
    origin https://github.com/[リポジトリ] (fetch)
    origin https://github.com/[リポジトリ] (push)
    upstream https://github.com/[fork元リポジトリ] (fetch)
    upstream [fork元リポジトリ] (push)
    

マージ作業

  • upstreamをフェッチする

    $ git fetch upstream
    remote: Enumerating objects: 10, done.
    remote: Counting objects: 100% (10/10), done.
    remote: Compressing objects: 100% (10/10), done.
    remote: Total 10 (delta 0), reused 4 (delta 0), pack-reused 0
    Unpacking objects: 100% (10/10), done.
    From https://github.com/[fork元リポジトリ]
     * [new branch]      master     -> upstream/master
    

    これで upstream/master に本家リポジトリのmasterブランチが取り込まれる。

    あとはこのブランチをforkしたブランチにマージするだけでOK!

  • 本家のマスターブランチをマージ

    $ git merge upstream/master
    Updating 11054f7..3f2c2de
    Fast-forward
     README.md                                 |   29 +++--
     index.html                                |   29 +++--
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     2 files changed, 701 insertions(+), 581 deletions(-)
    

    ※2回目以降は上記のfetchとマージを繰り返します。

    $ git fetch upstream
    remote: Enumerating objects: 358, done.
    remote: Counting objects: 100% (313/313), done.
    remote: Compressing objects: 100% (77/77), done.
    remote: Total 239 (delta 186), reused 212 (delta 162), pack-reused 0
    Receiving objects: 100% (239/239), 51.40 KiB | 923.00 KiB/s, done.
    Resolving deltas: 100% (186/186), completed with 53 local objects.
    From https://github.com/[fork元リポジトリ]
       5f3ddb1..4a16841  master                 -> upstream/master
    

    上記のように出ればマージが必要です。

    Fork元リポジトリのmasterブランチに更新がなければ以下のようになります。

    $ git fetch upstream
    Already up to date.
    

コメント

このブログの人気の投稿

docker-compose up で proxyconnect tcp: dial tcp: lookup proxy.example.com: no such host

docker-compose で起動したweb、MySQLに接続できない事象

【PHP】PHP_CodeSnifferを使う(コーディングルールのカスタマイズ)