【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.
コメント
コメントを投稿